保持选定的NavigationItem通过方向更改

时间:2013-02-06 19:11:44

标签: android android-actionbar navigationitem

我通过ActionBar NavigationMode(DROP_DOWN_LIST)为Android 3+设备实现了视图导航。

      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;
          }
      });

这可以按预期工作,但在方向更改时,使用index = 0再次调用onNavigationItemSelected,将我的Activity返回到第一个View。

我怎样才能保持这种状态?并且不要让onNavigationItem在索引0 onCreate?

上调用

编辑:

根据Kirill的回答,可以存储当前的inedx,但是第三个视图无法通过NavigationList进行选择,如果我在onCreate之后没有调用setNavigationItemSelected,则会自动触发index = 0,返回应用程序第一种观点。

这是我的问题。

1 个答案:

答案 0 :(得分: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应该替换为您的对象,您应该使用适当的方法