我正在尝试在嵌套在Fragment中的listview上实现Action bar搜索。 目前我只是想将搜索文本打印到控制台上,但它无法正常工作。
以下是我的代码:
<item
android:id="@+id/search"
android:actionViewClass="android.widget.SearchView"
android:icon="@drawable/ic_search"
android:showAsAction="collapseActionView|ifRoom"
android:title="search"/>
班级定义:
public class FragmentTab1 extends Fragment{
这是我的onCreateOptionsMenu:
public boolean onCreateOptionsMenu(Menu menu) {
System.out.println("menu inflater");
MenuInflater inflater = getActivity().getMenuInflater();
inflater.inflate(R.menu.main, menu);
SearchView searchView = (SearchView)menu.findItem(R.id.search).getActionView();
SearchView.OnQueryTextListener textChangeListener = new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextChange(String newText) {
System.out.println("Text"+newText);
return true;
}
@Override
public boolean onQueryTextSubmit(String query) {
System.out.println("on query submit: "+query);
return true;
}
};
searchView.setOnQueryTextListener(textChangeListener);
return true;
}
然而,当我输入搜索框时,没有任何内容写入控制台,任何提示我缺少什么?
答案 0 :(得分:0)
试用此代码。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.options_menu, menu);
// Associate searchable configuration with the SearchView
SearchManager searchManager =
(SearchManager) getSystemService(Context.SEARCH_SERVICE);
SearchView searchView =
(SearchView) menu.findItem(R.id.search).getActionView();
searchView.setSearchableInfo(
searchManager.getSearchableInfo(getComponentName()));
return true;
}
答案 1 :(得分:0)
这里的问题在于声明方法,我们必须使用一个片段:
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
有了这一切,所有内容都应该正常工作,但是我必须寻找一种方法,一旦Fragment启动,我的MainActivity菜单就会失效。