実行時にアクションバーアイテムを追加するにはどうすればよいですか?
私はを使用してactionBarSherlock
いますが、イベントが発生したときにいくつかのボタンを追加する必要があります(たとえば、RSSからいくつかのテキストを取得します)。固定xmlに頼ることはできません。
実行時にアクションバーアイテムを追加するにはどうすればよいですか?
私はを使用してactionBarSherlock
いますが、イベントが発生したときにいくつかのボタンを追加する必要があります(たとえば、RSSからいくつかのテキストを取得します)。固定xmlに頼ることはできません。
次のようなコードでメニューを作成できます。
/*************************************/
/* 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()を呼び出す必要があります。
ボタンを表示する必要があるかどうかを決定するフラグを維持できます
boolean hasRss = false;
次に、メソッドonCreateOptionsMenu(Menu menu)をオーバーライドし、hasRssがtrueまたはfalseかどうかを確認します。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);
}
invalidateOptionsMenu();
値を取得し、アクションバーのメニュー項目をリロードするために呼び出すたびに、hasRss値をtrueに設定する必要があります