【发布时间】:2015-08-11 21:33:28
【问题描述】:
在我的 MainActivity 中,我的操作栏/工具栏/菜单上有一个活动的搜索按钮。我想知道是否有一种方法可以过滤活跃搜索的片段形式的列表?提前致谢!
如果每个片段(它们在 viewpager + 带有标签的操作栏中)都可以有自己的操作栏,那就更好了!
【问题讨论】:
标签: android android-fragments android-actionbar
在我的 MainActivity 中,我的操作栏/工具栏/菜单上有一个活动的搜索按钮。我想知道是否有一种方法可以过滤活跃搜索的片段形式的列表?提前致谢!
如果每个片段(它们在 viewpager + 带有标签的操作栏中)都可以有自己的操作栏,那就更好了!
【问题讨论】:
标签: android android-fragments android-actionbar
您应该为您的活动的视图寻呼机创建一个自定义适配器
然后显示来自适配器的片段,现在您有两种选择:
祝你好运我的朋友
【讨论】:
如果您不想使用系统服务来搜索described in docs,那么一种方法如下:
在 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();
在 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;
}
最后
private void handleSearch(String query){
if(mMySearchFragment != null){
mMySearchFragment.updateSearchResults(query);
}
}
您的片段需要有一个公共方法 updateSearchResults(String query),您可以在其中运行搜索并使用新集合更新列表视图的适配器
此外,您可以在 Studio 中导入 BasicContactables 示例(文件 -> 导入示例)并研究代码
【讨论】: