【问题标题】:Android: Send info from activity to fragmentAndroid:将信息从活动发送到片段
【发布时间】:2015-08-11 21:33:28
【问题描述】:

在我的 MainActivity 中,我的操作栏/工具栏/菜单上有一个活动的搜索按钮。我想知道是否有一种方法可以过滤活跃搜索的片段形式的列表?提前致谢!

如果每个片段(它们在 viewpager + 带有标签的操作栏中)都可以有自己的操作栏,那就更好了!

【问题讨论】:

    标签: android android-fragments android-actionbar


    【解决方案1】:

    您应该为您的活动的视图寻呼机创建一个自定义适配器

    然后显示来自适配器的片段,现在您有两种选择:

    1. 在其自己的布局 (.xml) 文件中为每个片段定义自定义工具栏,然后使用它或
    2. 将数据从活动传递到片段适配器,从片段适配器传递到您的目的片段并进行过滤。

    祝你好运我的朋友

    【讨论】:

      【解决方案2】:

      如果您不想使用系统服务来搜索described in docs,那么一种方法如下:

      1. 在 onCreate 方法中获取片段的句柄

        // if you fragment is embedded with <fragment tag>
        mMySearchFragment = (MySearchfragment)getFragmentManager()
            .findFragmentById(R.id.your_fragment) 
        
        //in case your fragment is added programmatically then, of course,
        getFragmentManager()
        .beginTransaction()
        .add(fragmentid, gragmentinstance, TAG)
        .commit();
        
      2. 在 onCreateOptionsMenu 中执行类似的操作

        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.menu_searching, menu);
            mSearchView = (SearchView) menu.findItem(R.id.menu_search_message).getActionView();
        
            mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener(){
                @Override
                public boolean onQueryTextSubmit(String query) {handleSearch(query)}
        
                @Override
                public boolean onQueryTextChange(String newText) { ... }
            });
        
            return true;
        }
        
      3. 最后

        private void handleSearch(String query){
            if(mMySearchFragment != null){
                mMySearchFragment.updateSearchResults(query);
            }
        }
        
      4. 您的片段需要有一个公共方法 updateSearchResults(String query),您可以在其中运行搜索并使用新集合更新列表视图的适配器

      此外,您可以在 Studio 中导入 BasicContactables 示例(文件 -> 导入示例)并研究代码

      【讨论】:

        猜你喜欢
        • 2014-09-29
        • 1970-01-01
        • 2017-12-16
        • 1970-01-01
        • 2012-09-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多