带有列表导航的Android ActionBar:在配置更改期间保存选定的项目位置?

带有列表导航的Android ActionBar:在配置更改期间保存选定的项目位置?,第1张

概述我有一个带列表导航模式的ActionBar. 问题是从导航微调器中选择项目后,当屏幕方向改变时,导航微调器选择的索引将重置为0. 如何在配置更改期间保留微调器的选定索引? 谢谢 您应该覆盖onSaveInstanceState并将选定的导航列表位置保存到bundle. 不要忘记恢复onCreate中的位置. 看下面的例子: public class MainActivity{ priv 我有一个带列表导航模式的Actionbar.
问题是从导航微调器中选择项目后,当屏幕方向改变时,导航微调器选择的索引将重置为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     */}

供应商&LT ;? extends Fragment> [] fragmentProvIDers是一个工厂方法对象列表,用于创建新的片段.
如果不使用actionbarsherlock,请将getSupportActionbar()替换为getActionbar(),并将getSupportFragmentManager()替换为getFragmentManager()

总结

以上是内存溢出为你收集整理的带有列表导航的Android ActionBar:在配置更改期间保存选定的项目位置?全部内容,希望文章能够帮你解决带有列表导航的Android ActionBar:在配置更改期间保存选定的项目位置?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1129153.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存