0

私の問題は、現在 4 つのタブを持つ TabActivity を持っていることです。最初のタブは、ユーザーが一部のデータを変更できる特別な詳細タブです。

問題は、Activity に OptionsMenu を追加すると、OptionsMenu がすべてのタブに表示されることです。onCreateOptionsMenuで現在のmTab​​Host.getCurrentTabTag()を確認しようとしましたが、何も変わりませんでした。それで、それを行う方法は?

(次のコードでは、すべてのタブに OptionsMenu が引き続き表示されます)

 public boolean onCreateOptionsMenu(Menu menu) {    
  if(mTabHost.getCurrentTabTag()==getString(R.string.tab_details)) {
   boolean result = super.onCreateOptionsMenu(menu);
   menu.add(0, EDIT_ID, 0, R.string.menu_edit).setIcon(R.drawable.edit);
   return result;
  }    

  return true;
 }

 public boolean onMenuItemSelected(int featureId, MenuItem item) {
  switch (item.getItemId()) {
       case EDIT_ID: {   
        Toast.makeText(this, "o.O", Toast.LENGTH_LONG).show();   
       }
  }

  return super.onMenuItemSelected(featureId, item);
 } 
4

1 に答える 1

0

文字列(実際にはタグ)を==と比較していることがわかります。通常、これは.equals()メソッドを使用して行う方が適切です。多分それはあなたの問題を解決するでしょう。
オプションメニューを動的に更新するには(ドキュメントから):

オプションメニューを開くたびに変更する場合は、onPrepareOptionsMenu()をオーバーライドする必要があります。

于 2010-08-04T12:54:45.017 に答える