2016-08-22 72 views
1

我正在學習從Android Hive開始的Android Studio中的操作欄。不幸的是,我使用v7動作欄和androidhive使用內置的動作欄,可能會有點不同。問題出在搜索視圖部分。menu.findItem在v7操作欄中返回null

MainActivity.java

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.mainmenu, menu); 

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); 
    System.out.println("Search Manager : "+searchManager); 
    SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); 
    System.out.println("Search View : "+searchView); 
    //searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName())); 

    return super.onCreateOptionsMenu(menu); 
} 

mainmenu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:app="http://schemas.android.com/apk/res-auto"> 
<item 
    android:id="@+id/action_search" 
    android:icon="@drawable/ic_action_search" 
    android:title="Search" 
    app:showAsAction="always" 
    android:actionViewClass="android.widget.SearchView" /> 
</menu> 

命令行說,搜索查看爲空。 我已經改變了安卓actionViewClass到應用程序:actionViewClass但它說android.widget.SearchView不能轉換到android.support.v7.widget.SearchView

對於完整的代碼,你可以看到here

如何固定?

回答

1

你應該使用

app:actionViewClass="android.support.v7.widget.SearchView" 

,而不是

android:actionViewClass="android.widget.SearchView" 

我希望這會幫助你。