如何在 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。