【问题标题】:Menu items not displaying in Navigation drawer view pager fragment导航抽屉视图寻呼机片段中未显示菜单项
【发布时间】:2014-08-28 13:53:35
【问题描述】:

我有一个带有 2 个片段、片段 A 和片段 B 的导航抽屉。片段 B 是一个带有视图寻呼机的片段,并具有片段选项卡 1 和片段选项卡 2。我正在尝试在片段选项卡 1 和片段选项卡中显示搜索视图2.我尝试在片段选项卡 1 中调用 setHasOptionsMenu(true),但未调用 onCreateOptions(),因此从不显示 searchview。任何人都可以请帮助如何让它工作吗?我已按照本教程进行操作:View Pager+fragments+navdrawer

片段 2(保存视图分页器)

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();
}

UDPATE

尝试了以下代码。片段选项卡 1 中的搜索视图出现,但现在选项卡 1 中的适配器在执行 onQueryTextchanged 时显示为空

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;
}

【问题讨论】:

  • 任何可能的帮助将不胜感激。为此苦苦挣扎了一整天:(

标签: android android-fragments tabs


【解决方案1】:

使用 Action Bar Compat 而不是 ActionBar Sherlock 解决了这个问题。猜猜与子片段有关的 Sherlock 库的一些问题,或者我可能错过了什么。但是 Action Bar Compat 工作得很好,没有改变任何东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多