3

我通过 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;
          }
      });

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

我怎样才能保持这种状态?并且不要让 onNavigationItem 被索引为 0 的 onCreate 调用?

编辑:

在基里尔回答之后,可以存储当前的 inedx,但是有第三个视图不能通过 NavigationList 选择,如果我在 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 回答