Android 未触发OnQueryTextListenerCompat
我正在尝试使一个应用程序使用Android 未触发OnQueryTextListenerCompat,android,searchview,Android,Searchview,我正在尝试使一个应用程序使用SearchView与运行安卓2.3版到4.4+的设备兼容。我目前在ActionBarActivity中有以下代码,该代码在运行Honeycom及以上版本的设备中运行良好,但在早期的设备中不起作用: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { SearchManager searchManager = (SearchManager) getSystemService(Con
SearchView
与运行安卓2.3版到4.4+的设备兼容。我目前在ActionBarActivity
中有以下代码,该代码在运行Honeycom及以上版本的设备中运行良好,但在早期的设备中不起作用:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
android.support.v7.widget.SearchView searchView = (android.support.v7.widget.SearchView) menu.findItem(R.id.action_search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setIconified(true);
searchView.setOnQueryTextListener(new OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
return false;
}
});
} else {
View searchView = SearchViewCompat.newSearchView(this);
SearchViewCompat.setOnQueryTextListener(searchView, new OnQueryTextListenerCompat() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
return false;
}
});
}
我面临的问题是,SearchView UI在早期的设备中显示良好,但OnQueryTextListenerCompat似乎从未被触发。我错过什么了吗?谢谢。我通过不使用SearchViewCompat解决了这个问题,我测试了姜饼和最新版本的兼容性 在my search_menu.xml中
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:yourapp="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" >
<item
android:id="@+id/menu_item_search"
android:icon="@android:drawable/ic_menu_search"
android:orderInCategory="1"
android:title="@string/menu_search"
yourapp:actionViewClass="android.support.v7.widget.SearchView"
yourapp:showAsAction="always|collapseActionView"/>
</menu>
实际上,我刚刚注意到以下代码返回一个空视图:View searchView=SearchViewCompat.newSearchView(this);public boolean onCreateOptions菜单()未返回任何值?
public class Main extends ActionBarActivity implements OnQueryTextListener {
private SearchView searchView;
private SearchManager searchManager;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.activity_main);
}
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.search_menu, menu);
View view = MenuItemCompat.getActionView(menu.findItem(R.id.menu_item_filter));
searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
MenuItem searchItem = menu.findItem(R.id.menu_item_search);
searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setQueryHint("Search...");
searchView.setIconifiedByDefault(false);
searchView.setIconified(false);
searchView.setOnQueryTextListener(Main.this);
searchView.clearFocus();
return super.onCreateOptionsMenu(menu);
}
public boolean onQueryTextChange(String val) {
if(!val.isEmpty()){
Log.e(""+val);
}
return false;
}
@Override
public boolean onQueryTextSubmit(String val) {
Log.e(""+val);
return false;
}
}