java - Android onsaveinstancestate()

标签 java android

所以我了解了如何使用的主要想法

  protected void onSaveInstanceState (Bundle outState)

http://developer.android.com/reference/android/app/Activity.html#onSaveInstanceState(android.os.Bundle)

同样来自Saving Android Activity state using Save Instance State

但我的问题是,如果这是第一次创建应用程序怎么办?那么之前 bundle 中不会存储任何内容......如果是这样,那么当我尝试从 bundle 中调用之前尚未保存的内容时,我会得到什么?空? 例如 我的代码中有这个

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String [] b=savedInstanceState.getStringArray("MyArray");
}
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    String [] a={"haha"};
    savedInstanceState.putStringArray("MyArray", a);
}

第一次打开应用程序时,b 的值是多少? 应用程序使用一次后,b 的值是多少?

非常感谢!

最佳答案

在你的onCreate()中 添加条件

 if(savedInstanceState==null){
  //meaning no data has been saved yet or this is your first time to run the activity.  Most likely you initialize data here.
 }else{
   String [] b=savedInstanceState.getStringArray("MyArray");
 }

顺便说一句,要检索保存在 onSaveInstanceState 中的数据,您将覆盖它

 @Override
 protected void onRestoreInstanceState(Bundle savedInstanceState) {
   // TODO Auto-generated method stub
  super.onRestoreInstanceState(savedInstanceState);
}

关于java - Android onsaveinstancestate(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14596272/

相关文章:

android - 为 Canvas 应用水平 ScrollView

java - 在 session 中更改 java bean 中的某些属性

java - 在Java中放心测试特定方法

java - Android Activity 生命周期 : Problems with Onstop()

android - ViewModelFactory无法正确实例化ViewModel

java - 如何在 Volley onResponse 中放置具有不同数量值的 HashMap

java - Spring启动与Spring安全错误: There was an unexpected error (type=Forbidden,状态= 403)

java - 关于 Firestore 是否有一些标志我可以检查数据是否在线/离线数据?

java - 禁用 IntelliJ 中运行窗口的显示

java - 将 double 值转换为字符串后如何从中删除小数点