【问题标题】:ToolBar SearchView with Activity and TabFragments带有 Activity 和 TabFragments 的 ToolBar SearchView
【发布时间】:2016-02-16 05:44:01
【问题描述】:

我需要在 ToolBar 中实现 SearchView。我尝试这样做。在 MainActivity 中,它在 Log.e 中显示搜索文本。但我需要将此 搜索查询 从 Activity 发送到 Fragment。我正在使用 3 个选项卡片段。 我需要从哪里将搜索查询传递给 Fragment

这是我的代码..

MainActivity:

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
        SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
        searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
        searchView.setSubmitButtonEnabled(false);
//        searchView.getOutlineProvider();
        searchView.setOnQueryTextListener(this);
        searchView.setOnCloseListener(this);

        return super.onCreateOptionsMenu(menu);
    } 

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case R.id.action_search:
                break;
            case R.id.action_addCart:
                break;
        }
        return super.onOptionsItemSelected(item);
    }

@Override
    public boolean onClose() {
        passQuery = "";
        System.out.println("Restaurant close");
        return true;
    }

@Override
public boolean onQueryTextSubmit(String query) {

    passQuery = query;
    System.out.println("Restaurant onQueryTextSubmit =" + query);
    return true;
}


@Override
public boolean onSearchRequested() {
    Bundle appData = new Bundle();
    appData.putBoolean(SEARCHING_DATA, true);
    startSearch(null, false, appData, true);
    System.out.println("Restaurant onSearchRequested = " + appData);
    return true;
}

@Override
public boolean onQueryTextChange(String newText) {
    passQuery = newText;
    System.out.println("Restaurant onQueryTextSubmit =" + newText);
    return true;
}

ViewPageradapter:

 ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
         adapter.addFrag(new TabFragment_1(), "WHAT'S HOT!"); 
         adapter.addFrag(new TabFragment_2(), "PIZZAS");  
         adapter.addFrag(new TabFragment_3(), "ICE CREAMS");  

                    viewPager.setAdapter(adapter);

                    TabLayout tabLayout = (TabLayout) findViewById(R.id.tabs);
                    tabLayout.setupWithViewPager(viewPager);

请帮我在android中通过这个viewPager传递搜索查询

【问题讨论】:

标签: android android-fragments android-activity searchview android-collapsingtoolbarlayout


【解决方案1】:

在您的片段中创建一个方法并将适配器编码放入该方法中。 然后从 OnQueryTextChange 或 OnQueryTextSubmit 调用该方法。 这是在片段中调用方法的代码

YourFragment fragment = (YourFragment)getFragmentManager().
                        findFragmentById(R.id.fragment_container);
                        fragment.yourMethod(passQuery);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-11
    • 2016-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 2016-04-28
    相关资源
    最近更新 更多