3

私はいくつかの Android アプリケーションを開発しており、2 つのタブを持つ ActionBar を持っています。ユーザーが 2 番目のタブを選択したときに、ActionBar に 2 つのアイコンを表示する必要があります。次のコードがあります。

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.activity_main, menu);
    mOptionsMenu=menu;
    menu.getItem(0).setVisible(false);
    menu.getItem(1).setVisible(false);
    return true;
} 

    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
        mViewPager.setCurrentItem(tab.getPosition());
        if (tab.getPosition()==1) {
        mOptionsMenu.getItem(0).setVisible(true);
        mOptionsMenu.getItem(1).setVisible(true);
}
    }

しかし、このコードは機能しません。教えてください、どうすれば自分のニーズを満たすことができますか?

4

2 に答える 2

10

で表示されるメニューを設定する必要がありますonPrepareOptionsMenu()。次のようにコードを変更できます。

private boolean menuShow = false;

public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { 
    mViewPager.setCurrentItem(tab.getPosition()); 
    if (tab.getPosition()==1) { 
      menuShow = true;
    } 
}


public boolean onPrepareOptionsMenu(Menu menu) {
  if(menuShow){
    mOptionsMenu.getItem(0).setVisible(true);    
    mOptionsMenu.getItem(1).setVisible(true);
  }
  return true;
}
于 2012-10-11T20:06:42.557 に答える
1

で可視性を変更する必要があるようですonPrepareOptionsMenu()

この回答を参照してください:プログラムでAndroidのメニューに可視性を設定します

于 2012-10-11T18:55:02.693 に答える