gpt4 book ai didi

android - 从 View 中获取当前 Activity、Fragment、LifeCycleOwner 的简单方法?

转载 作者:行者123 更新时间:2023-12-04 16:04:53 31 4
gpt4 key购买 nike

Views 时, ViewModelsLiveData具有生命周期意识。 ViewModel想要当前FragmentActivity , LiveData当前LifecycleOwner .您事先不知道您的 View 是否会被包装或在某种程度上。所以它需要一个灵活的函数来找到想要的上下文。我最终得到了这两种方法:

private FragmentActivity getFragmentActivity() {
Context context = getContext();
while (!(context instanceof FragmentActivity)) {
context = ((ContextWrapper) context).getBaseContext();
}
return (FragmentActivity) context;
}

private LifecycleOwner getLifecycleOwner() {
Context context = getContext();
while (!(context instanceof LifecycleOwner)) {
context = ((ContextWrapper) context).getBaseContext();
}
return (LifecycleOwner) context;
}

现在这是要放入每个 View 的大量样板代码。有没有更简单的方法?

我不想为此使用自定义的 View 基类,因为大层次结构很丑陋。另一方面,组合需要与此解决方案一样多的代码。

最佳答案

你可以找到它lifecycle-runtime-ktx :

fun View.findViewTreeLifecycleOwner(): LifecycleOwner? = ViewTreeLifecycleOwner.get(this)

关于android - 从 View 中获取当前 Activity、Fragment、LifeCycleOwner 的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49075413/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com