Android 导航抽屉视图寻呼机片段中未显示菜单项
我有一个带有2个片段的导航抽屉,片段a和片段B。片段B是一个带有视图寻呼机的片段,有片段选项卡1和片段选项卡2。我试图在片段选项卡1和片段选项卡2中显示搜索视图。我尝试在片段选项卡1中调用SetHasOptions菜单,但未调用onCreateOptions,因此永远不会显示searchview。有谁能帮我把这件事做好吗?我遵循了本教程: 片段2保存视图寻呼机Android 导航抽屉视图寻呼机片段中未显示菜单项,android,android-fragments,tabs,Android,Android Fragments,Tabs,我有一个带有2个片段的导航抽屉,片段a和片段B。片段B是一个带有视图寻呼机的片段,有片段选项卡1和片段选项卡2。我试图在片段选项卡1和片段选项卡2中显示搜索视图。我尝试在片段选项卡1中调用SetHasOptions菜单,但未调用onCreateOptions,因此永远不会显示searchview。有谁能帮我把这件事做好吗?我遵循了本教程: 片段2保存视图寻呼机 public class TabsFragment extends SherlockFragment { private PagerT
public class TabsFragment extends SherlockFragment {
private PagerTitleStrip titleStrip;
private Menu menu;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.tabs_swipe, container, false);
// Locate the ViewPager in viewpager_main.xml
ViewPager mViewPager = (ViewPager) view.findViewById(R.id.pager);
// Set the ViewPagerAdapter into ViewPager
mViewPager.setAdapter(new TabsPagerAdapter(getChildFragmentManager(),
getSherlockActivity()));
titleStrip = (PagerTitleStrip) view.findViewById(R.id.titlestrip);
titleStrip.setTextColor(Color.WHITE);
titleStrip.setBackgroundColor(Color.parseColor("#E6000000"));
mViewPager.setCurrentItem(2);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onDetach() {
Log.d("tabs frag","on detach");
super.onDetach();
try {
Field childFragmentManager = Fragment.class
.getDeclaredField("mChildFragmentManager");
childFragmentManager.setAccessible(true);
childFragmentManager.set(this, null);
} catch (NoSuchFieldException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
片段选项卡1:
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
Log.d(TAG, "on create options"); // never called
menu.clear();
inflater.inflate(R.menu.main, menu);
searchItem = menu.findItem(R.id.action_search);
searchItem.setVisible(true);
mSearchView = (SearchView) searchItem.getActionView();
}
乌德帕特
尝试了以下代码。片段选项卡1中的Searchview出现,但现在选项卡1中的适配器在执行onQueryTextchanged时显示null
if(adapter.getItem(mViewPager.getCurrentItem()) instanceof FragTab1)
{
FragTab1 fragment = (FragTab1) adapter.getItem(mViewPager.getCurrentItem());
fragment.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onQueryTextChange(String newText) {
searchAdapter.getFilter().filter(newText); // shows searchadapter is null eventhough I have filled it in onCreate.
searched = true;
return true;
}
用Action Bar Compat而不是Action Bar Sherlock解决了这个问题。猜猜夏洛克图书馆关于儿童片段的一些问题,或者可能是我遗漏了什么。但是动作条的兼容性非常好,没有任何改变 任何可能的帮助都将不胜感激。为此奋斗了一整天: