[英]Android onsaveinstancestate()
所以我得到了如何使用的主要思想
protected void onSaveInstanceState (Bundle outState)
但是我的问题是,如果这是第一次创建应用程序,该怎么办? 那么以前什么也不会存储在捆绑软件中....如果是的话,那么当我尝试从捆绑软件中调出尚未保存的东西之前,我得到什么呢? 例如我的代码中有这个
@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);
}
您必须始终在onCreate()或onRestoreInstanceStateState()中始终检查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.
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.