我正在寻找一种方法来设置在我的 MainActivity 中膨胀的 MenuItem
的可见性,具体取决于我所在的 Fragment
。
有关信息:我正在使用 actionBarSherlock
、zxing
和一些 google 服务
。
该应用程序是用抽屉导航(带 abs)构建的,我也以这种方式操作 FragmentStack
我每次按下触摸返回时切换到另一个 Fragment 我回到我的 主要 fragment
。
这是我的菜单:
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:id="@+id/button_generator" android:title="GENERER" android:icon="@drawable/ic_drawer"></item>
</menu>
这是我膨胀菜单的地方:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
Log.d(TAG, "================= onCreateOptionsMenu ================= fragSt: " + fragmentStatus);
this.getSherlock().getMenuInflater().inflate(R.menu.main, menu);
mGenQrFromContacts = menu.findItem(R.id.button_generator);
return true;
}
我已经尝试了针对 here 的解决方案,但对我来说不起作用。
最佳答案
你应该在你的 Fragment
中试试这个:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
// ...
// call the method setHasOptionsMenu, to have access to the menu from your fragment
setHasOptionsMenu(true);
//...
}
// the create options menu with a MenuInflater to have the menu from your fragment
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
menu.findItem(R.id.button_generator).setVisible(true);
super.onCreateOptionsMenu(menu, inflater);
}
还有这个,在你的Activity
中:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getSupportMenuInflater().inflate(R.menu.my_layout, menu);
menu.findItem(R.id.button_generator).setVisible(false);
return true;
}
希望这对您有所帮助。
关于android - 如何在不同的 fragment 中设置 ActionBar 项目的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20685665/