我在使用 android Oreo 时遇到了麻烦。我的 MainActivity 有 4 个片段,当用户按下选项卡时它们会相互替换。现在的问题是,我在 onPause 的单例实例中保存了一个值。每当用户按下下一个选项卡时,就会在 onPause 之前调用该片段的 onResume,因此我无法正确地从单例中检索值。
问问题
1777 次
3 回答
6
请使用 setReorderingAllowed 作为 false 来获取正常的片段生命周期。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
fragmentTransaction.setReorderingAllowed(false);
}
于 2018-03-29T15:36:36.463 回答
1
Oreo 版本中的 Fragment 存在一些问题。我创建了一个单独的应用程序来检查当我们将一个 Fragment 替换为另一个 Fragment 时调用了哪些生命周期函数。这是日志:
MainActivity onCreate ->
FragmentA oncreate ->
FragmentA oncreateView ->
MainActivity onStart ->
FragmentA onStart ->
MainActivity onResume ->
FragmentA onResume ->
Button Pressed;that replace fragment A with Fragment B
FragmentB onCreate ->
FragmentB onCreateView ->
FragmentB onStart ->
FragmentB onResume ->
FragmentA onPause ->
FragmentA onStop ->
FragmentA onDestroy ->
我正在导入 import android.app.Fragment。当我用 android.support.v4.app.Fragment 替换它时它起作用了。
于 2018-03-22T05:19:34.297 回答
0
onResume 应该在 onPause 之前调用。 如果您想在开始片段之前保存某些内容,请在 onStart 中执行。如果您想在离开片段之前保存某些内容,请在 onStop 中执行。 有关片段生命周期的更多信息
于 2018-03-21T04:01:25.467 回答