Hello World Android帮助理解Bundle

时间:2012-03-24 19:10:38

标签: android

一个基本的疑问。我正在使用以下代码。

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) 请帮助我理解错误的地方。谢谢。

1 个答案:

答案 0 :(得分:1)

它将包含您@Override onSaveInstanceState中的任何内容。

只要系统需要保存其状态以供以后重新创建,就会调用

onSaveInstanceState。方向的改变就是这些情况之一。如果您在纵向和横向之间切换,则会调用onSaveInstanceState,并且您将填写传入的包。然后将使用相同的包调用onCreate

因此,每当使用savedInstanceState调用onCreate时,您应该从此而不是从头开始初始化您的活动。

编辑:从评论中复制的解释:

在你的onSaveInstanceState中你会调用Bundle的putXxxx方法 - 无论什么值代表你活动的当前状态,你都会把它“放”到Bundle中。然后你将在未来的onCreate中找回相同的捆绑包,这样你就可以从你离开的地方重新创建你的活动。

如果您没有实施onSaveInstanceStatesavedInstanceState参数在onCreate中将为空,您可以放心地忽略它。