问题是从导航微调器中选择项目后,当屏幕方向改变时,导航微调器选择的索引将重置为0.
如何在配置更改期间保留微调器的选定索引?
谢谢
解决方法 您应该覆盖onSaveInstanceState并将选定的导航列表位置保存到bundle.不要忘记恢复onCreate中的位置.
看下面的例子:
public class MainActivity{ private static final String CURRENT_FRAGMENT_TAG = "fragmentposition"; @Inject @named("navigationFragments") private ProvIDer<? extends Fragment>[] fragmentProvIDers; @OverrIDe protected voID onCreate(Bundle bundle) { super.onCreate(bundle); final Actionbar actionbar = getSupportActionbar(); actionbar.setNavigationMode(Actionbar.NAVIGATION_MODE_List); actionbar.setListNavigationCallbacks(ArrayAdapter.createFromresource( this,R.array.navigation_menu,androID.R.layout.simple_List_item_1),new Actionbar.OnNavigationListener() { @OverrIDe public boolean onNavigationItemSelected(int itemposition,long itemID) { final String fragmentTag = "fragment-" + itemposition; // to prevent fragment re-selection and loosing early saved state if (getSupportFragmentManager().findFragmentByTag(fragmentTag) != null) { return true; } final Fragment fragment = fragmentProvIDers[itemposition].get(); getSupportFragmentManager().beginTransaction(). replace(androID.R.ID.content,fragment,fragmentTag). commit(); return true; } }); actionbar.setSelectednavigationItem(bundle != null ? bundle.getInt(CURRENT_FRAGMENT_TAG) : 0); } @OverrIDe protected voID onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); outState.putInt(CURRENT_FRAGMENT_TAG,getSupportActionbar().getSelectednavigationIndex()); } /* Additional stuff here */}
供应商< ;? extends Fragment> [] fragmentProvIDers是一个工厂方法对象列表,用于创建新的片段.
如果不使用actionbarsherlock,请将getSupportActionbar()替换为getActionbar(),并将getSupportFragmentManager()替换为getFragmentManager()
以上是内存溢出为你收集整理的带有列表导航的Android ActionBar:在配置更改期间保存选定的项目位置?全部内容,希望文章能够帮你解决带有列表导航的Android ActionBar:在配置更改期间保存选定的项目位置?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)