首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在旋转器中默认情况下,当方向更改/写入字符串时保存数据

在旋转器中默认情况下,当方向更改/写入字符串时保存数据
EN

Stack Overflow用户
提问于 2014-12-15 14:52:26
回答 1查看 912关注 0票数 0

我在我的应用程序中有一个活动,它使用一些条件进行搜索,并有一些旋转小部件来选择它们。

我的问题是,当我的Android设备的定位发生变化时,活动就会重新启动,并且失去了在旋转器中选择的所有标准和搜索的结果。

我尝试过使用onSaveInstanceState(Bundle)保存数据,并在onCreate方法中恢复数据,我成功地获得了数据,但我的问题是,当方向改变和活动重新启动时,我需要再次将这些数据放在旋转器中。我已经测试了一些方法,但这是不可能的:

1.将保存在适配器加载的LinkedList的第一个字符串:(不工作)

代码语言:javascript
复制
if (savedInstanceState != null) {
          list.add(0, stSaved); //stSaved is the string saved
}

2.保存所选字符串的位置,并使用下一个旋转器的方法:(不工作)

代码语言:javascript
复制
if (savedInstanceState != null) {
          spinner.setSelection(posSaved, true); //posSaved is the string's position to save
}

3.另一种旋转方法:(不工作)

代码语言:javascript
复制
if (savedInstanceState != null) {
          spinner.setPrompt(stSaved);
}

此外,还有12个条件,因此有12个字符串可以保存,再加上包含搜索结果的列表,那么使用SharedPreferences比使用onSaveInstanceState(Bundle)更好。

PD1。我保存并正确获取所需的数据,但在活动重新启动时,默认情况下不能放入旋转器。PD2。我不能使用android:configChanges="orientation",因为这个活动有两个片段(条件和结果),而且不兼容。

我希望你能帮我,非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2014-12-16 10:53:22

代码语言:javascript
复制
protected void onSaveInstanceState(Bundle bundle) {
  super.onSaveInstanceState(icicle);
  bundle.putInt("selected_pos_spinnerX", spinnerX.getSelectedItemPosition());
}

并恢复价值观:

代码语言:javascript
复制
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

//some code ...
//code to init spinner and load data ...

if(savedInstanceState!=null){
    spinnerX.setSelection(savedInstanceState.getint("selected_pos_spinnerX"));
}

}

关于搜索结果,您可以根据正在处理的数据结构和结果将它们存储在本地文件或应用程序首选项中。

您可以序列化搜索结果(如json),并将json字符串存储在文件中,解析它(如果恢复屏幕)并将其加载到结果视图中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27486701

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档