【问题标题】:save data while destroying and recreating activity在销毁和重新创建活动时保存数据
【发布时间】:2014-01-18 19:10:56
【问题描述】:

我的Activity 有设置(从onCreateOptionMenu 调用),用于更新当前Activity 上的用户界面。

在更新 Preferences 时启动 Preferences,Calling Activity 需要在 Preference 基础上更新 UI。

Preference 如何调用的片段:-

Intent in = new Intent(this, PrefsSecondaryActivity.class);
in.putExtra("caller", "sx");
startActivityForResult(in, SECSETTINGS);

Catch 以获取 UI 更新

if (requestCode == SECSETTINGS) {
Intent intent = getIntent();
finish();
startActivity(intent);
}

我曾经使用上述 sn-p 重新创建该活动。 onCreate() 的内部 Activity。我检查了 Preference Name-value Pair 并更新了运行良好的 UI。

如何在销毁和重新创建 Activity 时存储该 Activity 内部的值?

当我正在销毁和重新创建活动时,它会呈现整个新的活动,其中没有任何值。

我尝试在调用 Preferences 时设置 onSavedInstanceState(),并在捕获 onActivityResult() 时调用 onRestoreInstanceState()

首选项中的设置值可以很好地更改 SLOC。所以现在不是优选的方式。

欢迎提出任何建议。

【问题讨论】:

  • 我不明白。将值存储在 onPause() 中并在 onCreate() 中重新加载。请编辑您的问题,使您遇到的问题更清楚。

标签: android android-activity android-preferences


【解决方案1】:

我就是这样做的(我在我的 Activity 中声明了一些静态变量):

@Override
protected final void onRestoreInstanceState(final Bundle inState)
{
    // Restore the saved variables.
    isChartShown = inState.getBoolean("chart", false);
    qIndex = inState.getInt("index");
    scores = inState.getIntArray("scores");
}
@Override
protected final void onSaveInstanceState(final Bundle outState)
{
    // Save the variables.
    outState.putBoolean("chart", isChartShown);
    outState.putInt("index", qIndex);
    outState.putIntArray("scores", scores);
}

此代码对我有用。我用它来保存一些用于在旋转时保持值的状态变量。

[编辑]

否则,如果你强制应用完成,那么你会选择 Sharedpreferences
只需在完成之前保存您的值,然后在 onCreate 中重新加载它们。

【讨论】:

  • 我已经尝试过这些,但是因为我强制finish() 重新创建的应用程序没有在其中保存捆绑包。
  • 这是我最后的路。但是我需要一些可以做的事情,然后是 Preferences
  • 数据库? CSV(或 XML)文件?是的,但是……这不是矫枉过正吗?
猜你喜欢
  • 2015-08-17
  • 2015-09-21
  • 1970-01-01
  • 2018-05-08
  • 1970-01-01
  • 1970-01-01
  • 2019-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多