2012-04-25 9 views
18

実行時にアクションバーアイテムを追加するにはどうすればよいですか?実行時にアクションバーアイテムを追加する方法

私はactionBarSherlockを使用していますが、イベントが発生したときにいくつかのボタンを追加する必要があります(たとえば、RSSからテキストを取得するなど)。私は固定されたXMLに依存することはできません。

答えて

31

あなたは、このようなコードでメニューを作成することができます

/*************************************/ 
/* Create the actionbar options menu */ 
/*************************************/ 
@Override 
public boolean onCreateOptionsMenu(Menu menu) 
{ 
    menu.add(0, 0, 0, "History").setIcon(R.drawable.ic_menu_recent_history) 
      .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 
    menu.add(0, 1, 0, "Settings").setIcon(R.drawable.ic_menu_manage) 
      .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 

    return true; 
} 

ブールのチェックインサイド。

あなたは、メニューを再作成するsupportInvalidateOptionsMenu()を呼び出す必要があります。

+0

ありがとうございます。よく働く!! – hdoria

7

あなたは、その後、あなたのボタン

boolean hasRss = false; 

を表示する方法onCreateOptionsMenu(メニューメニュー)をオーバーライドし、hasRssが真か偽であるかどうかを確認する必要があるかどうかを示すフラグを維持することができます。 trueの場合は、ボタンを追加して何でもします。あなたはRSSかを持っているなら、あなたは関係なく、あなたが常に表示したいあなたの通常のボタンを追加することができません

@Override 
    public boolean onCreateOptionsMenu(Menu menu) 
    { 
     if (hasRss) 
     { 
      menu.add(Menu.NONE, 0, Menu.NONE, "View RSS").setIcon(R.drawable.ic_menu_view) 
         .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 
     } 

     menu.add(Menu.NONE, 1, Menu.NONE, "Normal button that is always there").setIcon(R.drawable.ic_menu_button) 
         .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS); 

    } 

あなたがあなたの値を取得するたび=真をごhasRss値を設定する必要があり、アクションをリロードするinvalidateOptionsMenu();を呼び出しますバーメニューの項目

+0

ありがとうございます。よく働く!! – hdoria

関連する問題