package androidx.lifecycle; import android.view.View; import android.view.ViewParent; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.lifecycle.runtime.R; public class ViewTreeLifecycleOwner { private ViewTreeLifecycleOwner() { } @Nullable public static LifecycleOwner get(@NonNull View view) { LifecycleOwner lifecycleOwner = (LifecycleOwner) view.getTag(R.id.view_tree_lifecycle_owner); if (lifecycleOwner != null) { return lifecycleOwner; } ViewParent parent = view.getParent(); while (lifecycleOwner == null && (parent instanceof View)) { View view2 = (View) parent; lifecycleOwner = (LifecycleOwner) view2.getTag(R.id.view_tree_lifecycle_owner); parent = view2.getParent(); } return lifecycleOwner; } public static void set(@NonNull View view, @Nullable LifecycleOwner lifecycleOwner) { view.setTag(R.id.view_tree_lifecycle_owner, lifecycleOwner); } }