私の Android アプリには、3 つの SherlockListFragments を持つ ViewPager を含む 1 つの SherlockFragmentActivity があります。ActionBarにさまざまなActionItemを表示したいことを知っています。たとえば、3 つの Fragment すべてに 1 つの SettingsItem があり、各 Fragment に異なる並べ替えタイプの一意の ActionItem があるとします。今、私はフラグメントでこのコードを使用します:
@Override
public void onCreateOptionsMenu( Menu menu, MenuInflater inflater )
{
super.onCreateOptionsMenu( menu, inflater );
inflater.inflate( R.menu.sort_menu, menu );
}
そして、私のアクティビティのこのコード:
@Override
public boolean onCreateOptionsMenu( Menu menu )
{
menu.add( Menu.NONE, PREFERENCES_ID, Menu.NONE, getString( R.string.menu_preferences ) )
.setIcon( R.drawable.ic_menu_settings_dark )
.setShowAsAction( MenuItem.SHOW_AS_ACTION_ALWAYS );
return super.onCreateOptionsMenu( menu );
}
問題は、アプリを起動すると、最初のタブに ActionItems が表示されないことです。別のタブにスライドしてから再び戻ると、ActionItems が表示されます。親アクティビティによって作成された設定項目など、ActionItem が 1 つしか表示されないことがあります。各タブにいくつかの ActionItem を表示し、各タブにいくつかの固有の ActionItem を表示するための優れたソリューションを誰もが知っています。各タブにコードをコピーしたくありませんでした。
EDIT タブの位置は重要ではありません。最初のアプリの起動時に、実際のタブに ActionItems が表示されません。