操作栏搜索 - 不工作。

时间:2014-10-22 09:57:42

标签: android android-actionbar android-search

我正在尝试在嵌套在Fragment中的listview上实现Action bar搜索。 目前我只是想将搜索文本打印到控制台上,但它无法正常工作。

以下是我的代码:

main.xml中:

<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;
    }

然而,当我输入搜索框时,没有任何内容写入控制台,任何提示我缺少什么?

2 个答案:

答案 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菜单就会失效。