首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据片段类型设置动作栏和左侧抽屉属性

如何根据片段类型设置动作栏和左侧抽屉属性
EN

Stack Overflow用户
提问于 2015-01-12 21:13:32
回答 7查看 394关注 0票数 3

我的应用程序中有各种类型的片段,ActionBar上有3个图标(过滤、刷新和排序),但我不想在每个片段中显示全部3个图标。我必须根据片段只显示其中的一部分。

我想对左边的抽屉做类似的事情。在一些片段上,我想显示左边的抽屉,而不想在另一些片段上显示左边的抽屉。

我在我的应用程序中有一个Activity类,我在上面附加了这些片段,目前我在这个类中处理这两件事,代码已经被if-else条件弄得一团糟。

因此,现在我正在检查片段名称,然后根据它设置动作栏图标和左侧抽屉属性。

请告诉我一个更好的方法(最好是在片段本身中处理)

谢谢

EN

Stack Overflow用户

发布于 2015-01-20 22:06:09

为了根据片段显示选项,您可以简单地执行以下操作:

setHasOptionsMenu(true)添加到片段的onCreate()方法中,并告诉活动重绘其选项菜单。

代码语言:javascript
复制
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
    getActivity().invalidateOptionsMenu();
}

接下来,重写onCreateOptionsMenu()方法以扩展您想要用于片段的选项。

代码语言:javascript
复制
// No support library - support library api slightly different
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    // Add Fragment menu elements to Activity menu elements
    inflater.inflate(R.menu.myfragmentmenu, menu);
    super.onCreateOptionsMenu(menu,inflater);
}

最后,确保捕获活动的onOptionsItemSelected()方法中的所有选项项。(重要提示:请确保替换片段,而不是添加它们。否则,将为每个片段调用onCreateOptionsMenu()。)

为了禁用和启用折叠器,您可以将以下方法添加到您的Activity中,并从您的片段中调用它:

代码语言:javascript
复制
public void toggleDrawer(boolean enabled) {
    if (enabled) {
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
        mDrawerToggle.setDrawerIndicatorEnabled(true);
    } else {
        mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
        mDrawerToggle.setDrawerIndicatorEnabled(false);
    }    
}
票数 1
EN
查看全部 7 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27902812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档