[英]Attaching OnQueryTextListener to SearchView gives NullPointerException
我的活动中有一个搜索视图。 当我尝试附加OnQueryTextListener时,它给了我NullPointerException。 其Java代码如下
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.allpurpose, menu);
MenuItem searchItem = menu.findItem(R.id.apmenu_search);
SearchView searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() {
public boolean onQueryTextChange(String newText) {return true;}
public boolean onQueryTextSubmit(String query) {return true;}
};
searchView.setOnQueryTextListener(queryTextListener);
return super.onCreateOptionsMenu(menu);
}
XML代码:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/apmenu_search"
android:icon="@android:drawable/ic_menu_search"
android:title="@string/srch"
android:showAsAction="ifRoom"
android:actionViewClass="android.support.v7.widget.SearchView" />
</menu>
所有“兼容”项均用于提供向后兼容性。 因此,在这种情况下, MenuItemCompat
支持高于7(而不是正常的11)版本的操作栏项。 在Java代码中,如果存在MenuItemCompat
,那么在xml中也必须有一个“ Compat”项。 现在,“ app”命名空间支持这些“ Compat”项。 因此,像这样更改xml:
<?xml version="1.0" encoding="utf-8"?>
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/apmenu_search"
android:icon="@android:drawable/ic_menu_search"
android:title="@string/srch"
app:showAsAction="ifRoom"
app:actionViewClass="android.support.v7.widget.SearchView" />
</menu>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.