Android - 在Fragment类中保存成员字段的值

时间:2015-05-02 19:40:20

标签: java android android-fragments sharedpreferences android-lifecycle

每次显示boolean时,我都会尝试在Fragment课程中使用Fragment做一些事情。

实施例

我的应用启动,首次打开FirstFragmentboolean true,然后我有if子句检查其值:

if (FirstTime) {
    FirstTime = false;
} else {
    // Other stuff here, cause it's not true.
}

然后,第一次,当FirstTimetrue时,我会像去另一个Fragment那样做。当我回到Fragment1onCreate()时,我会这样做。它始终是true,似乎令人耳目一新。

然后我认为这可能是Fragment的问题,每次按下Fragment1时,它都会重新启动或者其他内容。然后,我在MainActivity

中添加了一个getter和setter
public Boolean getFirstTime() {
    return FirstTime;
}

public void setFirstTime(Boolean FirstTime) {
    this.FirstTime = FirstTime;
}

从开始以来,它是真的,然后,我将代码从Fragment1更改为:

if (((MainActivity) getActivity()).getFirstTime())
    ((MainActivity) getActivity()).setFirstTime(false);
} else {
    // Other stuff here, cause it's not true,
}

然而,它仍然说这是真的。

我做错了什么或我误解了碎片? 有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

简单的解决方案,将您的布尔值设置为静态。

这当然不符合编程的良好实践。

为了更直接地回答你的问题,我假设片段和活动被破坏并创建新实例,因此布尔值再次设置为true。因此,通过使变量成为静态,它的状态将保留在该类的所有实例中。