java - 在 Android 中通过 onCreate 使用 onSaveInstanceState 检索数据

标签 java android arraylist instance

我正在创建一个 Android 应用程序,其中涉及将一些数据存储在 String ArrayList 中,我将其称为“contentSpace”。我需要保存这个数组,以便在应用程序再次启动时检索应用程序的状态。为此,我使用 onSaveInstanceState,并将其传递给 onCreate 以检索数据。然而,这是行不通的。这是部分代码:

ArrayList<String> contentSpace = new ArrayList<String>();

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_main); 

    if (savedInstanceState != null) {

        contentSpace = savedInstanceState.getStringArrayList("Data");

        Toast.makeText(this, "Success", Toast.LENGTH_LONG).show();
    }

    else {

        Toast.makeText(this, "Failure", Toast.LENGTH_LONG).show();

    }


}


@Override
public void onSaveInstanceState(Bundle savedInstanceState) {

    super.onSaveInstanceState(savedInstanceState);

    if (contentSpace != null) {

    savedInstanceState.putStringArrayList("Data", contentSpace);

    Toast.makeText(this, "Saved", Toast.LENGTH_LONG).show();

    }

    else {

        Toast.makeText(this, "Not saved", Toast.LENGTH_LONG).show();

    }


}

当我运行程序时,Toast 显示“已保存”,因此我认为 contentSpace 包含我需要的数据并且不为空。但是,当我再次启动应用程序时调用 onCreate 时,Toast 显示“失败”,据说表明 contentSpace 为空。有人知道这有意义吗?预先感谢您的帮助。

最佳答案

However, when onCreate is called when I start the app again, Toast displays "Failure,"

这是因为您要再次启动 Activity ,onSaveInstanceState 意味着当您重新创建/暂停 View /Activity (例如屏幕旋转)时,它将调用onSaveInstanceState() 方法,然后调用 onCreate() ,届时您将获得已保存的数据,但在您的情况下,当您尝试再次启动应用程序时,数据将不会保存。

解决方案:

使用SharedPreferences即使您退出应用程序,也可以保存数据。

关于java - 在 Android 中通过 onCreate 使用 onSaveInstanceState 检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24375083/

相关文章:

java - 我对象的ArrayList,indexOf问题

java - Java将二维数组分配给三维数组

android - 如何在未启用 USB 调试的情况下使用 adb tcpip?

一旦内容可用,Java 就会从 Stream 中读取

android - 为什么在 Android 中按下按钮图像不会改变?

android - 从 sqlite 存储和检索 Uri

c++ - 我坚持使用 C++ 中的模板类

android - 从 Arraylist<HashMap<String, String>> 填充 ListView

java - 我无法在 Eclipse 中输入花括号

java - 如何更新持久化 Java 对象的结构?