Android 保存的捆绑包不';不包含数据

Android 保存的捆绑包不';不包含数据,android,android-fragments,Android,Android Fragments,我有两个可序列化的对象,我想在片段重建后保留它们。因此,我在onSaveInstanceState期间保存了它们(此处的对象不为null): 在片段的onCreate方法中,我尝试将它们从捆绑包中取出: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (savedInstanceState != null) { r

我有两个可序列化的对象,我想在片段重建后保留它们。因此,我在onSaveInstanceState期间保存了它们(此处的对象不为null):

在片段的onCreate方法中,我尝试将它们从捆绑包中取出:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState != null) {
        renderer = (DefaultRenderer) savedInstanceState.getSerializable(RENDERER);
        series = (CategorySeries) savedInstanceState.getSerializable(SERIES);
    }
}



问题是调用getSerializable后,“renderer”和“series”始终为空。你知道为什么吗?

你在
FragmentActivity
中重写了托管这个片段的
onSaveInstanceState
方法吗?
如果你是,那么确保它应该调用
super.onSaveInstanceState(Bundle)

您是否覆盖了托管此片段的
FragmentActivity
中的
onSaveInstanceState
方法?
如果是,请确保它应该调用
super.onSaveInstanceState(Bundle)

您是否覆盖了托管此片段的
FragmentActivity
中的
onSaveInstanceState
方法?
如果是,请确保它应该调用
super.onSaveInstanceState(Bundle)

您是否覆盖了托管此片段的
FragmentActivity
中的
onSaveInstanceState
方法?
如果是,请确保它应该调用
super.onSaveInstanceState(Bundle)

您说过在重建片段之后,但是这些方法都来自Activity lifecyclecan u putInt,看看它是否工作?我试过putString,它工作了!我真的不明白…我发现对(DefaultRenderer)和(CategorySeries)的强制转换使对象为空。如果我不强制转换它并将其保留为可序列化,则对象不为null。这可能是什么?我发现对渲染器的赋值(DefaultRenderer)savedInstanceState.getSerializable(渲染器)不起作用。如果我接受一个新对象“DefaultRenderer test=savedInstanceState.getSerializable(RENDERER)”,则赋值有效!这是什么魔法?你说在你的片段被重建后,这些方法来自Activity lifecyclecan u putInt,看看它是否有效?我试过putString,它有效了!我真的不明白…我发现对(DefaultRenderer)和(CategorySeries)的强制转换使对象为空。如果我不强制转换它并将其保留为可序列化,则对象不为null。这可能是什么?我发现对渲染器的赋值(DefaultRenderer)savedInstanceState.getSerializable(渲染器)不起作用。如果我接受一个新对象“DefaultRenderer test=savedInstanceState.getSerializable(RENDERER)”,则赋值有效!这是什么魔法?你说在你的片段被重建后,这些方法来自Activity lifecyclecan u putInt,看看它是否有效?我试过putString,它有效了!我真的不明白…我发现对(DefaultRenderer)和(CategorySeries)的强制转换使对象为空。如果我不强制转换它并将其保留为可序列化,则对象不为null。这可能是什么?我发现对渲染器的赋值(DefaultRenderer)savedInstanceState.getSerializable(渲染器)不起作用。如果我接受一个新对象“DefaultRenderer test=savedInstanceState.getSerializable(RENDERER)”,则赋值有效!这是什么魔法?你说在你的片段被重建后,这些方法来自Activity lifecyclecan u putInt,看看它是否有效?我试过putString,它有效了!我真的不明白…我发现对(DefaultRenderer)和(CategorySeries)的强制转换使对象为空。如果我不强制转换它并将其保留为可序列化,则对象不为null。这可能是什么?我发现对渲染器的赋值(DefaultRenderer)savedInstanceState.getSerializable(渲染器)不起作用。如果我接受一个新对象“DefaultRenderer test=savedInstanceState.getSerializable(RENDERER)”,则赋值有效!这是什么魔法?我没有覆盖它。那么,请覆盖它。但是所有的调用都是正确的。我就是不能给成员变量赋值。只对局部变量。我没有重写它。那么,请重写它。但是所有调用都是正确的。我就是不能给成员变量赋值。只对局部变量。我没有重写它。那么,请重写它。但是所有调用都是正确的。我就是不能给成员变量赋值。只对局部变量。我没有重写它。那么,请重写它。但是所有调用都是正确的。我就是不能给成员变量赋值。仅适用于局部变量。
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if (savedInstanceState != null) {
        renderer = (DefaultRenderer) savedInstanceState.getSerializable(RENDERER);
        series = (CategorySeries) savedInstanceState.getSerializable(SERIES);
    }
}