根据当前片段,将不同的onQueryTextSubmit分配给SearchView

时间:2018-06-24 18:45:38

标签: android android-fragments

在我的应用程序中,我有两个选项卡,一个选项卡显示一个书籍列表,另一个选项卡显示一个朋友列表。这两个选项卡都是MainActivity的片段,该片段在其工具栏中实现了searchView。我拥有的当前searchView在MainActivity中这样声明:

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.menu_main, menu);

    searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {

        @Override
        public boolean onQueryTextSubmit(String query) {

            if(searchView.getWidth()>0)
            {
                SearchFragment myFrag = new SearchFragment();
                Bundle bundle = new Bundle();
                bundle.putString("searchQuery", query);
                myFrag.setArguments(bundle);


                FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
                transaction.replace(R.id.fragment_container, myFrag);
                transaction.addToBackStack(null);
                transaction.commit();

                return true;
            }
            return true;
        }
        @Override
        public boolean onQueryTextChange(final String query)
        {
            return true;
        }
    });
    return true;
}

现在,此searchView可以在我与MainActivity相关联的所有片段中使用,但问题是搜索始终执行相同的操作。我想做的是,当我在片段书中时,我的searchView要做下面的事情,而当我在片段朋友中时,我的searchView做其他事情。有没有一种方法可以在片段中重新分配searchView以便执行其他操作,或者以MainActivity可以识别我所在的片段的方式进行创建,从而使搜索根据该内容执行其他操作?谢谢。

0 个答案:

没有答案