2015-12-19 41 views
4

我試圖在操作欄上添加搜索欄,並在getActionVeiw()上發現Nullpointer異常。 Pleaes幫我短了這個問題,我已經提供了所需的詳細信息。NullPointerException-嘗試調用空對象引用的接口方法「android.view.View android.view.MenuItem.getActionView()'

我的MainActivity擴展AppCompatActivity並在此行代碼

SearchView searchView = (SearchView)menu.findItem(R.id.action_search).getActionView(); 

searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 

上面搜索查看返回錯誤我進口

import android.support.v7.widget.SearchView; 

菜單的main.xml文件

<item 
     android:id="@+id/action_search" 
     android:orderInCategory="100" 
     android:title="@string/action_search" 
     app:showAsAction="always" 
     app:actionViewClass="android.support.v7.widget.SearchView" /> 

搖籃文件 -

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    testCompile 'junit:junit:4.12' 
    compile 'com.android.support:appcompat-v7:23.1.1' 
    compile 'com.android.support:design:23.1.1' 
    compile 'com.android.support:support-v4:+' 
    compile 'com.android.support:appcompat-v7:+' 
    compile 'com.google.android.gms:play-services-appindexing:8.1.0' 
} 
+2

menu.findItem(R.id.action_search)返回null。菜單是否使用正確的xml? – gvmani

回答

6

請上傳的完整代碼。

你必須初始化

getMenuInflater().inflate(R.menu.menu_main, menu); 

,或者你必須delcare

MenuInflater inflater = getMenuInflater(); 
inflater.inflate() 

然後在onCreateOptionsMenu使用此代碼()

SearchView searchView = (SearchView)menu.findItem(R.id.action_search).getActionView(); 

    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 

例如 - :

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 

     // Associate searchable configuration with the SearchView 
     getMenuInflater().inflate(R.menu.menu_main, menu); 
     SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 

     SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); 

     searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 

     this.menu = menu; // this will copy menu values to upper defined menu so that we can change icon later akash 

     return true; 
    } 

試試這個。

相關問題