7

小さな問題があり、動的メニューで解決したいと思います:

public boolean onCreateOptionsMenu(com.actionbarsherlock.view.Menu menu) {
    switch(Globals.editMode){
    case Globals.MODE_NONE:
        getSupportMenuInflater().inflate(R.menu.imagehandlingmain_menu, menu);
        break;
    case Globals.MODE_MOVE:
        getSupportMenuInflater().inflate(R.menu.savecancel_menu, menu);
        break;
    case Globals.MODE_ROTATE:
        getSupportMenuInflater().inflate(R.menu.savecancel_menu, menu);
        break;
    case Globals.MODE_SCALE:
        getSupportMenuInflater().inflate(R.menu.savecancel_menu, menu);
        break;
    }
    //getSupportMenuInflater().inflate(R.menu.imagehandlingmain_menu, menu);
    return true;

作業モードを選択できるメニューと、特定の作業モードではメニューが「キャンセル」と「保存」に変わる2つのメニューがあります。

つまり、いずれかのモードに入り、作業を保存しないことにした場合は、キャンセルして前の状態に戻ることができるという考えです。

ここで、onCreateOptionsMenu が 1 回だけ呼び出されると仮定したので、必要に応じてメニュー全体をどのように「リロード」できますか?

4

1 に答える 1

29

を使用できますActivity.invalidateOptionsMenu()。これは、名前が示すように、現在のメニューを無効にし、その結果、Activity.onPrepareOptionsMenu()再度呼び出されます。

于 2012-09-24T08:15:21.597 に答える