关于java:不推荐使用Android方法怎么办?

What can I do when an Android method is depreciated?

本问题已经有最佳答案,请猛点这里访问。

我正在使用kotlin中的方法

1
2
3
4
5
6
 override fun setUserVisibleHint (isVisibleToUser: Boolean) {
    super.setUserVisibleHint (isVisibleToUser)
    if (isVisibleToUser && isResumed) {
        getTask ()
    }
}

但它告诉我它已贬值,在Java中已贬值。

此行 setUserVisibleHint

如何解决或替换该警告?

在此处输入图片说明


按照Fragment发行说明:

  • You can now set a max Lifecycle state for a Fragment by calling setMaxLifecycle() on a FragmentTransaction. This replaces the now deprecated setUserVisibleHint(). FragmentPagerAdapter and FragmentStatePagerAdapter have a new constructor that allows you to switch to the new behavior. (b/129780800)

FragmentPagerAdapter上(对FragmentStatePagerAdapter也是一样),您会注意到默认构造函数也已弃用,取而代之的是第二个构造函数,该构造函数采用int behavior可以是两个值之一:

  • 已弃用的BEHAVIOR_SET_USER_VISIBLE_HINT,这是旧的行为,每当页面更改时,您都会获得对setUserVisibleHint()的回调。

  • 仅在当前Fragment上调用onResume()的新行为BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT-仅发送onStart()每隔一个Fragment。

  • 因此,如果您切换到新的BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT,则可以将setUserVisibleHint()中的逻辑移到onResume()

    1
    2
    3
    4
    override fun onResume() {
        super.onResume()
        getTask()
    }

    如果继续对适配器使用不建议使用的构造函数,则需要继续使用setUserVisibleHint()-您应同步更改两者。


    因此,如果您使用的是查看寻呼机,则可以执行此操作

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    viewPager?.addOnPageChangeListener(object : ViewPager.OnPageChangeListener {

            override fun onPageScrollStateChanged(state: Int) {
            }

            override fun onPageScrolled(position: Int, positionOffset: Float, positionOffsetPixels: Int) {

            }
            override fun onPageSelected(position: Int) {

            }

        })