gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 22:53:48 24 4
gpt4 key购买 nike

我正在创建一个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com