我的应用程序中有各种类型的片段,ActionBar上有3个图标(过滤、刷新和排序),但我不想在每个片段中显示全部3个图标。我必须根据片段只显示其中的一部分。
我想对左边的抽屉做类似的事情。在一些片段上,我想显示左边的抽屉,而不想在另一些片段上显示左边的抽屉。
我在我的应用程序中有一个Activity类,我在上面附加了这些片段,目前我在这个类中处理这两件事,代码已经被if-else条件弄得一团糟。
因此,现在我正在检查片段名称,然后根据它设置动作栏图标和左侧抽屉属性。
请告诉我一个更好的方法(最好是在片段本身中处理)
谢谢
发布于 2015-01-20 22:06:09
为了根据片段显示选项,您可以简单地执行以下操作:
将setHasOptionsMenu(true)添加到片段的onCreate()方法中,并告诉活动重绘其选项菜单。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
getActivity().invalidateOptionsMenu();
}接下来,重写onCreateOptionsMenu()方法以扩展您想要用于片段的选项。
// 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中,并从您的片段中调用它:
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);
}
}https://stackoverflow.com/questions/27902812
复制相似问题