2

メインアクティビティでアクションバーメニューを作成しています。

public boolean onCreateOptionsMenu(Menu menu) {
    // Used to put dark icons on light action bar
    SubMenu sub = menu.addSubMenu(null);
    sub.add(0, R.style.Theme_Sherlock, 0, "Default");
    sub.add(0, R.style.Theme_Sherlock_Light, 0, "Light");
    sub.add(0, R.style.Theme_Sherlock_Light_DarkActionBar, 0,
            "Light (Dark Action Bar)");

    MenuItem ShareButton = sub.getItem();
    ShareButton.setIcon(R.drawable.ic_action_overflow);
    ShareButton.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS
            | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

    return true;

}

次に、フラグメントアクティビティで、2番目のフラグメントのメニューを変更しようとします。

first i do this:
 @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

そして私はこれを行います:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // TODO Auto-generated method stub
        //final MenuInflater inflater2 = getMenuInflater();
        //inflater.inflate(R.menu.historymenu, menu);
        Log.v("Some Log", "I'm in on Create Options Menu");

        SubMenu sub = menu.addSubMenu(null);
        sub.add(0, R.style.Theme_Sherlock, 0, "HistoryCheck");


        MenuItem ShareButton = sub.getItem();
        ShareButton.setIcon(R.drawable.ic_action_overflow);
        ShareButton.setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS
                | MenuItem.SHOW_AS_ACTION_WITH_TEXT);

        super.onCreateOptionsMenu(menu, inflater);
    }

ご覧のとおり、フラグメントとメインアクティビティごとに.xmlからメニューをインフレーションしたいのですが、何らかの理由でインフレーションは何もしません。

新しいサブメニューを追加するコードを使用すると、2番目のタブ/フラグメントに切り替えると2つのメニューが表示されます。追加のメニューを追加するのではなく、既存のメニューを変更したいと思います。

正しい行を変更するのを手伝ってください。

Tnx。

4

1 に答える 1

11

メニューを変更したい場合は、メインアクティビティにメニューを追加せず、フラグメントにのみメニューを追加してください。そうすれば、フラグメントを切り替えると、それに応じてメニューが切り替わります。

xmlからメニューを膨らませることができます:

@Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.the_menu, menu);
    }

必ずインポートcom.actionbarsherlock.view.Menuしてくださいcom.actionbarsherlock.view.MenuInflater

the_menu.xml(サブメニュー付き)

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@+id/menu_item"
        android:showAsAction="always"
        android:title="Menu">
        <menu>
            <item
                android:id="@+id/submenu_1"
                android:showAsAction="always"
                android:title="submenu 1"/>
            <item
                android:id="@+id/submenu_2"
                android:showAsAction="always"
                android:title="submenu 2"/>
        </menu>
    </item>

</menu>
于 2012-09-18T09:47:28.903 に答える