为什么Bundle对象在onCreate()上始终为null?

And*_*one 8 android bundle oncreate

我正在尝试进入Android编程,因为我从一本书中拿了一些例子.在这些示例中要求输入以下代码:

public class ExemploCicloVida extends Activity {

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        Log.i(TAG, getClassName() + " onCreate() called on: " + icicle);

        TextView t = new TextView(this);
        t.setText("Exemplo de ciclo de vida de uma Activity.\nConsulte os logs no LogCat");
        setContentView(t);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道为什么Bundle对象在这种情况下总是为null.

Dav*_*ton 15

如果没有先前保存的状态,则该包将为null.

这在ActivityAPI文档中提到.


Vla*_*zki 9

在我的情况下,原因是特定活动没有在清单文件中声明主题.

要解决此问题,请打开AndroidManifest.xml,单击"应用程序",在"应用程序节点"中选择崩溃活动,然后在"属性"的"主题"字段中添加主题.在我的情况下,它是

@style/Theme.AppCompat.Light.DarkActionBar
Run Code Online (Sandbox Code Playgroud)

但您可以从其他活动中复制主题.

PS:我知道这是一个旧问题的答案,但我在寻找修复时偶然发现它并没有找到可行的解决方案,所以这可能对其他人有所帮助.