如何在 Fragment 中获取 LifecycleOwner?
How to get LifecycleOwner in a Fragment?
我需要让 LifecycleOwner 在我的 FirestoreRecyclerViewOption 中传递它,但 Fragment 没有实现生命周期。
那么,如何获得它?
我的 Fragment 实现了 LifecycleOnwer,如以下代码示例所示,
public class ListRestFragment extends Fragment implements LifecycleOwner
在 onCreateMethod 之后,
lifecycleRegistry = new LifecycleRegistry(this);
lifecycleRegistry.setCurrentState(Lifecycle.State.CREATED);
并完成
@Override
public void onStart() {
super.onStart();
lifecycleRegistry.setCurrentState(Lifecycle.State.STARTED);
}
@NonNull
@Override
public Lifecycle getLifecycle() {
return lifecycleRegistry;
}
我按照这个例子
但它不起作用
Attempt to invoke virtual method 'androidx.lifecycle.Lifecycle$State androidx.lifecycle.Lifecycle.getCurrentState()' on a null object reference
我需要它来编辑我的 FirestoreRecyclerViewOption 和 setLifeCycleOwner,因为它总是空的,而且我每次都有一个 NullPointer。
更新: 实际上,如果您在观察者中使用视图,最好使用 getViewLifeCycleOwner。因为当 LiveData 更新时视图可能不存在并且您想要更改视图(例如更改视图的可见性)导致崩溃。
片段本身就是您要查找的LifecycleOwner。您可以使用关键字“this”作为片段的引用。
读这个:“Lifecycle
是一个 class ,它保存有关组件生命周期状态的信息(如 activity 或片段)并允许其他对象观察此状态。"
并且:
“LifecycleOwner 是一个单一的方法接口,表示 class 有一个生命周期。”
在片段中你可以使用getViewLifecycleOwner()
方法来获取lifeCycleOwner。
我需要让 LifecycleOwner 在我的 FirestoreRecyclerViewOption 中传递它,但 Fragment 没有实现生命周期。
那么,如何获得它?
我的 Fragment 实现了 LifecycleOnwer,如以下代码示例所示,
public class ListRestFragment extends Fragment implements LifecycleOwner
在 onCreateMethod 之后,
lifecycleRegistry = new LifecycleRegistry(this);
lifecycleRegistry.setCurrentState(Lifecycle.State.CREATED);
并完成
@Override
public void onStart() {
super.onStart();
lifecycleRegistry.setCurrentState(Lifecycle.State.STARTED);
}
@NonNull
@Override
public Lifecycle getLifecycle() {
return lifecycleRegistry;
}
我按照这个例子 但它不起作用
Attempt to invoke virtual method 'androidx.lifecycle.Lifecycle$State androidx.lifecycle.Lifecycle.getCurrentState()' on a null object reference
我需要它来编辑我的 FirestoreRecyclerViewOption 和 setLifeCycleOwner,因为它总是空的,而且我每次都有一个 NullPointer。
更新: 实际上,如果您在观察者中使用视图,最好使用 getViewLifeCycleOwner。因为当 LiveData 更新时视图可能不存在并且您想要更改视图(例如更改视图的可见性)导致崩溃。
片段本身就是您要查找的LifecycleOwner。您可以使用关键字“this”作为片段的引用。
读这个:“Lifecycle 是一个 class ,它保存有关组件生命周期状态的信息(如 activity 或片段)并允许其他对象观察此状态。"
并且: “LifecycleOwner 是一个单一的方法接口,表示 class 有一个生命周期。”
在片段中你可以使用getViewLifecycleOwner()
方法来获取lifeCycleOwner。