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函数?