java - 当Android方法被贬值时我该怎么办?

标签 java android kotlin

我使用的是kotlin中的方法

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

但是它告诉我它已经折旧了,在java中已经折旧了。

这一行setUserVisibleHint

如何解决或替换该警告?

enter image description here

最佳答案

根据 Fragment release notes :

  • 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 行为,可以是两个值之一:

  1. 已弃用的 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() - 您应该同步更改两者。

关于java - 当Android方法被贬值时我该怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56137023/

相关文章:

java - 如果源 jar 存在,Gradle 不会构建

android - RecognitionListener.onError() 是否自动 SpeechRecognizer.cancel()?

java - 当rabbit监听器抛出异常时,无法修改spring-amqp中的rabbitmq消息

java - 如何去除 iReport/Jasper 中多余的饼图?

java - Apache POI 启用 excel 编辑

java - Android 而不是回收器 View 中的卡片 View ,该应用程序向我显示一个空白页面

android - 安装 ionic npm 错误! tar.unpack 错误

android - 协程不断崩溃而不显示错误

android - 为什么我得到 : null cannot be cast to non-null type android. widget.SearchView ?

android - 在 kotlin 中启用和禁用广播