Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/225.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android onsaveinstancestate()_Java_Android - Fatal编程技术网

Java Android onsaveinstancestate()

Java Android onsaveinstancestate(),java,android,Java,Android,因此,我得到了如何使用的主要想法 protected void onSaveInstanceState (Bundle outState) 也来自 但我的问题是,如果这是第一次创建应用程序,该怎么办?那么以前包中不会存储任何东西……如果是这样,那么当我试图从包中调用以前未保存的东西时,我会得到什么?null? 例如 我的密码里有这个 @Override protected void onCreate(Bundle savedInstanceState) { super.onCre

因此,我得到了如何使用的主要想法

  protected void onSaveInstanceState (Bundle outState)

也来自

但我的问题是,如果这是第一次创建应用程序,该怎么办?那么以前包中不会存储任何东西……如果是这样,那么当我试图从包中调用以前未保存的东西时,我会得到什么?null? 例如 我的密码里有这个

@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()或onRestoreInstanceState()中检查null,如下所示:

String [] b = new String[arraysize];    

   protected void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);      

                  if (savedInstanceState != null)
                  {
                       b = savedInstanceState.getStringArray("MyArray");

                      // Do here for resetting your values which means state before the changes occured.

                  }
                  else{
                          default.. 
                  }

                   Here you do general things.
    }

您必须始终在onCreate()onRestoreInstanceState()中检查null,如下所示:

String [] b = new String[arraysize];    

   protected void onCreate(Bundle savedInstanceState) {
                  super.onCreate(savedInstanceState);      

                  if (savedInstanceState != null)
                  {
                       b = savedInstanceState.getStringArray("MyArray");

                      // Do here for resetting your values which means state before the changes occured.

                  }
                  else{
                          default.. 
                  }

                   Here you do general things.
    }
在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);
}
在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);
}

什么意思?什么会抛出NPE?对不起,这本应该附在OP上。你是什么意思?什么抛出了NPE?抱歉,这本应该附加到OP。我明白了……如果是这样,那么我需要onRestoreInstanceState做什么?我的onCreate是否可以在应用程序启动时检索数据?我不确定这是否是从onCreate函数检索保存的实例的好方法,因为onRestoreInstanceState()用于检索onSaveInstanceState()中保存的内容。有时,onCreate()不会被调用,而不是onRestart(),因此您无法检索数据,因为它将跳过onCreate()函数那么,当当前活动被破坏,导致当前状态的破坏时,那么每次都必须调用onCreate(),不是吗?这就是《开发人员指南》提到使用onCreate()或onRestoreInstanceState()保存状态的原因。我尝试了这个方法,但由于某些原因捆绑包总是空的,然后我尝试了onRestoreInstanceState,由于某些原因它从未被调用(我通过创建一个toast win onrestore并显示它进行了测试),你能向我解释为什么吗?你说从未调用是什么意思?什么不是onRestoreInstanceState函数?我明白了……如果是这样,那么我需要onRestoreInstanceState做什么?我的onCreate是否可以在应用程序启动时检索数据?我不确定这是否是从onCreate函数检索保存的实例的好方法,因为onRestoreInstanceState()用于检索onSaveInstanceState()中保存的内容。有时,onCreate()不会被调用,而不是onRestart(),因此您无法检索数据,因为它将跳过onCreate()函数那么,当当前活动被破坏,导致当前状态的破坏时,那么每次都必须调用onCreate(),不是吗?这就是《开发人员指南》提到使用onCreate()或onRestoreInstanceState()保存状态的原因。我尝试了这个方法,但由于某些原因捆绑包总是空的,然后我尝试了onRestoreInstanceState,由于某些原因它从未被调用(我通过创建一个toast win onrestore并显示它进行了测试),你能向我解释为什么吗?你说从未调用是什么意思?什么不是onRestoreInstanceState函数?