We were unable to load Disqus. If you are a moderator please see our troubleshooting guide.

steveyan • 9 years ago

多谢分享!解答了我的疑惑

葭驹 杨 • 9 years ago

为什么我的无法保存数据?

protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString(editTextString, ((EditText)findViewById(R.id.editText)).getText().toString());
}

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if(savedInstanceState!=null)
((EditText)findViewById(R.id.editText)).setText(savedInstanceState.getString(editTextString));
}

Guest • 9 years ago

先执行putString吧?

Hongyan Lu • 8 years ago

一般onSaveInstanceState对应的是onRestoreInstanceState方法这一类的

Zebra • 9 years ago

Figure 2:当系统开始停止你的Activity时,只有在Activity实例会需要重新创建的情况下才会调用到onSaveInstanceState() (1) ,在这个方法里面可以指定额外的状态数据到Bunde中。如果这个Activity被destroyed然后这个实例又需要被重新创建时,系统会传递在 (1) 中的状态数据到 onCreate() (2) 与 onRestoreInstanceState()(3).

onSaveInstanceState只有activity重新实例化才会被调用,一般情况下,应该在onRestoreInstanceState中恢复,而不是onCreate;

Jensen Lin • 7 years ago

一直有个疑问,调用方法的父类实现的时机是方法开始时还是结束时?

student_13 • 8 years ago

最后的Caution,“这样默认的父类实现才能保存视图状态的信息”应该改为“这样默认的父类实现才能恢复保存的视图状态”

aJIEw • 8 years ago

Figure 2上方的那一段末尾应该是“之前的Bundle对象会(系统)被传递到activityonRestoreInstanceState()方法与 onCreate() 方法中”,虽然并不影响阅读。另外,谢谢你们无私的翻译。

melon • 8 years ago

一处错误:被传递到你我们activity的...

allenlsy • 9 years ago

> Note:为了能使Android系统能够恢复Activity中的View的状态,每个View都必须有一个唯一ID,由android:id定义。

如果我在两个不同的layout里面,分别定义了View,但是给他们一样的ID,会有什么影响?

Guest • 9 years ago

为什么我的无法保存数据?

protected void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

outState.putString(editTextString, ((EditText)findViewById(R.id.editText)).getText().toString());

}

Dylan Wang • 8 years ago

在M中测试能正常工作

Chao Tian • 8 years ago

protected void onSaveInstanceState(Bundle outState) {
outState.putString(editTextString, ((EditText)findViewById(R.id.editText)).getText().toString());
super.onSaveInstanceState(outState);
}
应该在调用super. onSaveInstanceState之前进行保存操作

Guest • 9 years ago

这个Bundle对象是必须要自己实现吗?我试了一下,如果不自己new一个Bundle对象的话,即使在onSaveInstanceState(Bundle savedInstanceState) 方法中把数据存储在savedInstanceState里面,在onCreate()方法里面又拿不出来了,是系统没有默认的Bundle?