我通过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,返回应用程序第一种观点。
这是我的问题。
答案 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应该替换为您的对象,您应该使用适当的方法