每次显示boolean
时,我都会尝试在Fragment
课程中使用Fragment
做一些事情。
我的应用启动,首次打开FirstFragment
和boolean
true
,然后我有if
子句检查其值:
if (FirstTime) {
FirstTime = false;
} else {
// Other stuff here, cause it's not true.
}
然后,第一次,当FirstTime
为true
时,我会像去另一个Fragment
那样做。当我回到Fragment1
和onCreate()
时,我会这样做。它始终是true
,似乎令人耳目一新。
然后我认为这可能是Fragment
的问题,每次按下Fragment1
时,它都会重新启动或者其他内容。然后,我在MainActivity
:
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,
}
然而,它仍然说这是真的。
我做错了什么或我误解了碎片? 有没有办法做到这一点?
答案 0 :(得分:1)
简单的解决方案,将您的布尔值设置为静态。
这当然不符合编程的良好实践。
为了更直接地回答你的问题,我假设片段和活动被破坏并创建新实例,因此布尔值再次设置为true。因此,通过使变量成为静态,它的状态将保留在该类的所有实例中。