3

Android 3 以降のデバイス向けに、ActionBar NavigationMode (DROP_DOWN_LIST) を使用してビューのナビゲーションを実装しました。

      getActionBar().setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

      SpinnerAdapter mSpinnerAdapter = ArrayAdapter.createFromResource(this, R.array.action_list, android.R.layout.simple_spinner_dropdown_item);

      getActionBar().setListNavigationCallbacks(mSpinnerAdapter, new OnNavigationListener() {
          @Override
          public boolean onNavigationItemSelected(int index, long arg1) {
              if(index == 0)
                  selectHomeView();
              else
                  selectMainView();

              return true;
          }
      });

これは意図したとおりに機能しますが、向きが変わると、onNavigationItemSelected が index = 0 で再度呼び出され、Activity が最初のビューに戻ります。

どうすればこの状態を維持できますか? onNavigationItem をインデックス 0 onCreate で呼び出さないでください。

編集:

Kirillの回答に続いて、現在のinedxを保存することは可能ですが、NavigationListから選択できない3番目のビューがあり、onCreateの後にsetNavigationItemSelectedを呼び出さない場合、これはindex = 0で自動的に起動し、アプリケーションを最初に戻します見る。

これは私の問題です。

4

1 に答える 1

1

アクティビティの状態が失われる可能性があるたびに実行される次の関数を拡張できます。

@Override    
protected void onSaveInstanceState(Bundle savedInstanceState) {   
    super.onSaveInstanceState(savedInstanceState);
    // Save the state of the drop down menu
    savedInstanceState.putInt("selectedIndex",mDropMenu.getSelectedIndex());
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState)
   super.onRestoreInstanceState(savedInstanceState);
   // Restore the state of the drop down menu
   mDropMenu.setSelectedIndex(savedInstanceState.getInt("selectedIndex"));
}

mDropMenu はオブジェクトに置き換える必要があり、適切なメソッドを使用する必要があることに注意してください

于 2013-02-06T19:18:25.813 に答える