一个基本的疑问。我正在使用以下代码。
package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
public class HelloAndroidActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
Bundle savedInstanceState包含什么?
由于oncreate是一个重写方法,我觉得“savedInstanceState”不会从基类中获取任何信息。
如果是这种情况,则无法执行super.onCreate(savedInstanceState)
请帮助我理解错误的地方。谢谢。
答案 0 :(得分:1)
它将包含您@Override
onSaveInstanceState
中的任何内容。
onSaveInstanceState
。方向的改变就是这些情况之一。如果您在纵向和横向之间切换,则会调用onSaveInstanceState
,并且您将填写传入的包。然后将使用相同的包调用onCreate
。
因此,每当使用savedInstanceState调用onCreate
时,您应该从此而不是从头开始初始化您的活动。
编辑:从评论中复制的解释:
在你的onSaveInstanceState
中你会调用Bundle的putXxxx
方法 - 无论什么值代表你活动的当前状态,你都会把它“放”到Bundle中。然后你将在未来的onCreate中找回相同的捆绑包,这样你就可以从你离开的地方重新创建你的活动。
如果您没有实施onSaveInstanceState
,savedInstanceState
参数在onCreate
中将为空,您可以放心地忽略它。