【问题标题】:Persisting Actionbar Spinner state持久化操作栏微调器状态
【发布时间】:2014-05-10 22:11:32
【问题描述】:

由于主题问题,我在操作栏上使用自定义视图,Spinner。当用户选择某个项目,然后单击一个按钮时,它会将操作栏更改为两个按钮,完成/放弃,正如 Roman Nurik 在这里解释的那样:https://plus.google.com/+RomanNurik/posts/R49wVvcDoEW。使用 Otto,当 Fragment 停止时,Activity 会得到通知,因此它可以使用 Spinner 恢复到正常的 Actionbar。但是,微调器不保留选择 - 例如,如果在单击更改操作栏的按钮之前选择了“管理商店”,则当它“恢复”时,应保持选择“管理商店”。

目前我正在使用 savedInstanceStates 来保存所选项目,但当然这只适用于具有 Spinner 的“屏幕”,并且仅适用于应用程序重启或设备旋转。

【问题讨论】:

    标签: android android-actionbar android-spinner


    【解决方案1】:

    在您的SpinneronItemSelectedListener 中,保存所选位置。

    如果您希望位置在 Activity 范围之外并且在应用程序重新启动后保持不变,您可以将位置存储在 SharedPreferences 中。或者,如果需要临时存储,可以将其存储在类变量中。

    在您的活动的onResume() 方法中检索存储的位置并使用

    spinner.setSelection(int position);
    

    【讨论】:

    • 我想我不需要使用保存的实例状态。顺便说一句,无论用户在哪里都保持位置是一种好的设计模式,还是应该只在第一级深度进行?
    • 我认为这取决于每种情况。这是一个很好的问题。我鼓励您在ux.stackexchange.com 上提问。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-09
    • 1970-01-01
    • 2023-03-17
    • 2021-05-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多