1

act1 または act3 から起動できるアクティビティ (act2) があります。act1 から起動する場合は、オプション メニューを利用できるようにしたいと思います。つまり、メニュー ボタンを押すと表示されます。act3から起動する場合、オプションメニューに必要なものが何もないので、メニューを押しても表示されないようにしたいです。これについてどうすればいいですか?

4

3 に答える 3

2

act1 から act2 を呼び出す場合は、trueバンドルを介してブール変数を渡します。また、act3 から act2 を呼び出している場合は、それをfalse渡すか、まったく渡さないでください。

act2 で、特にonCreate()メソッドでそのブール変数をキャッチします。act3 からバンドルを渡さない場合、null pointer exceptionこの操作の実行中に act2 がスローされることに注意する必要があります。これで、act2 がどこから来たかを判断するのに役立つブール変数を取得できます。[act1またはact2から来たよりも本当の場合]。

onCreateOptionsMenu()アクティビティのメソッドをオーバーライドすると、ブール値が返されます。したがって、trueメニューボタンを押したときにメニュー項目がポップアップするよりも合格した場合、または戻った場合はメニュー項目がポップアップしませんfalse。onCreate() メソッドからフェッチしたブール変数を使用します。true[act1 から] メニューが表示されるとき、またはfalse[act3 から] の場合はまったく表示されないように、単純に返すことができます。

于 2011-04-07T11:51:54.083 に答える
2

インテントを使えば可能です。例えば:

act1で、act2を立ち上げながら、

    Intent intent = new Intent(this, Act2.class);
    intent.putExtra("showmenu", true);
    startActivity(intent);

act3 では、false に設定するか、何もしないことができます。

act2で確認して表示

    if (intent.getBooleanExtra("showmenu", false))
        //show option menu
于 2011-04-07T11:52:10.513 に答える
1

act1から起動した場合:

Intent io = new Intent(act1.this, act2.class);
    io.putExtra("enableOptionMenu", 1);
    startActivity(io);

act3から起動した場合:

Intent io = new Intent(act3.this, act2.class);
    io.putExtra("enableOptionMenu", 0);
    startActivity(io);

act2では、onCreateの「enableOptionMenu」を読みます。

int enableOptionMenu;
    Intent i = getIntent();
    enableOptionMenu = i.getIntExtra("enableOptionMenu", 0);

最後に、onCreateOptionsMenuのenableOptionMenuを確認します。

public boolean onCreateOptionsMenu(Menu menu) {
    if (enableOptionMenu == 1) {    
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.menu_act2, menu);
    }
    return true;
}
于 2011-04-07T12:12:06.233 に答える