如何在不同的片段中设置ActionBar项的可见性

JoJ*_*Pla 7 android menuitem android-fragments actionbarsherlock

我正在寻找一种方法来设置MenuItem我的MainActivity中膨胀的可见性取决于我在哪Fragment.

有关信息:我使用actionBarSherlock,zxing以及一些google services.

该应用程序是使用导航抽屉(使用abs)构建的,我也是FragmentStack以这样的方式操作我每次切换到另一个片段时,当我按下触摸后我回到我的脑中Main 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>
Run Code Online (Sandbox Code Playgroud)

这是我给菜单充气的地方:

 @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;
}
Run Code Online (Sandbox Code Playgroud)

我已尝试过这里的解决方案,但在我的情况下不起作用.

fll*_*llo 16

你应该在你的尝试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);
}  
Run Code Online (Sandbox Code Playgroud)

这个,在你的Activity:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getSupportMenuInflater().inflate(R.menu.my_layout, menu);
    menu.findItem(R.id.button_generator).setVisible(false);
    return true;
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

  • 这正是我用来控制多个片段(标签)之间的操作项可见性的模式 (2认同)
  • 我用的是安德鲁和弗洛的相同模式!工作得很好 (2认同)