首页 > 解决方案 > 当 Android 方法被贬值时,我该怎么办?

问题描述

我正在使用 kotlin 中的方法

 override fun setUserVisibleHint (isVisibleToUser: Boolean) {
    super.setUserVisibleHint (isVisibleToUser)
    if (isVisibleToUser && isResumed) {
        getTask ()
    }
}

但它告诉我它在 Java 中已折旧、折旧。

这一行setUserVisibleHint

如何解决或替换该警告?

在此处输入图像描述

标签: javaandroidkotlin

解决方案


根据片段发行说明

  • 您现在可以通过调用 FragmentTransaction 为 Fragment 设置最大生命周期状态setMaxLifecycle()。这取代了现在已弃用的setUserVisibleHint(). FragmentPagerAdapterFragmentStatePagerAdapter拥有一个允许您切换到新行为的新构造函数。( b/129780800 )

查看FragmentPagerAdapter(同样适用于FragmentStatePagerAdapter),您会注意到默认构造函数已被弃用,取而代之的是第二个构造函数,该构造函数采用int behavior可以是两个值之一的 an:

  1. deprecated BEHAVIOR_SET_USER_VISIBLE_HINT,这是旧的行为,您可以setUserVisibleHint()在页面更改时获得回调。

  2. BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT仅调用当前 Fragment的新行为onResume()- 仅发送所有其他 Fragment onStart()

因此,如果您切换到新的BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT,那么您可以将您拥有的逻辑移动setUserVisibleHint()onResume()

override fun onResume() {
    super.onResume()
    getTask()
}

如果您继续为您的适配器使用已弃用的构造函数,那么您将需要继续使用setUserVisibleHint()- 您应该同步更改两者。


推荐阅读