This question already has answers here:
How to find a replacement for deprecated method?
                                
                                    (2个答案)
                                
                        
                在11个月前关闭。
            
        

我在kotlin中使用该方法

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


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

这行setUserVisibleHint

如何解决或替换该警告?

enter image description here

最佳答案

按照Fragment release notes


  
  现在,您可以通过在FragmentTransaction上调用setMaxLifecycle()来为Fragment设置最大生命周期状态。这将替换现在已弃用的setUserVisibleHint()FragmentPagerAdapterFragmentStatePagerAdapter具有新的构造函数,可让您切换到新行为。 (b/129780800
  


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


不推荐使用的BEHAVIOR_SET_USER_VISIBLE_HINT,这是旧的行为,每当页面更改时,您都会在其中获得对setUserVisibleHint()的回调。
新行为BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT仅在当前Fragment上调用onResume()-其他所有Fragment仅发送onStart()


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

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


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

10-04 12:26