当前位置: 首页 > 知识库问答 >
问题:

实时数据:候选分辨率将很快更改

通和裕
2023-03-14

在同样的情况下,当我调用LiveData对象的方法时,Android studio会显示警告消息

viewModel.emailValidationResult.observe(viewLifecycleOwner, {onEmailChanged(it)})

候选解析将很快更改,请使用完全限定名显式调用以下更接近的候选:

公共开放乐趣观察(所有者:LifecycleOwner,观察者:observer

据我所知,这是在更新kotlin 1.4之后发生的,这到底是什么意思?

共有3个答案

谭文林
2023-03-14

我尝试删除“导入androidx.lifecycle.observe”,并将我们的观察者转换为以下内容:

// From this
livedata.observe(viewLifecycleOwner, Observer<MyClass?> {
    // do stuff with it
})

// To this
livedata.observe(viewLifecycleOwner) {
    // do stuff with it
}

当我们需要删除onChange调用中的观察者时,出现了这个问题,例如。

    // From this
    livedata.observe(viewLifecycleOwner, object : Observer<MyClass?> {
        override fun onChanged(t: MyClass?) {
            // Do stuff with it t
            livedata.removeObserver(this)
        }
    })
    
    // To this
    livedata.observe(viewLifecycleOwner) {
        // do stuff with it
        livedata.removeObserver(this) <--- not working ofc
    }

我听说人们已经将观察者分解为变量,因此能够通过引用变量来添加/删除它。但是,我无法弄清楚如何在不使用“观察者”的情况下实例化本地观察者

韩高峯
2023-03-14

AndroidX扩展已弃用,因此我们必须使用原始扩展。

删除导入androidx.lifecycle.observe

然后

viewModel.liveData.observe(viewLifecycleOwner, Observer { result ->
    
})

viewModel.liveData.observe(viewLifecycleOwner) { result ->
                
}
叶鸿煊
2023-03-14

这意味着不再需要androidx中的扩展。

只需删除它的导入导入androidx.lifecycle.observe

实际上,它在androidx中会被弃用。阅读更多推理。

编辑:

请注意Erik Hoogendoorn的“问题”

此更改导致观察到的LiveData对象中的值被解释为可为null(因为转换的lambda语法基于可为null的Java代码)。Kotlin扩展并非如此,它会导致用户功能的损失。在我看来,应该恢复这种变化,并找到不同的解决方案。

我很好奇他们是否会重新命名

 类似资料:
  • 我已经开发了一个2D侧滚动平台一段时间了。这是我的第一场正式比赛,快结束了。到目前为止,我还没有过多考虑过决议。 我的游戏是基于瓷砖的,大多数瓷砖和玩家精灵都是。尺寸为40x40像素的PNG文件。默认屏幕高度和宽度为1280x720。据我所知,现在的大多数游戏都有很多不同的分辨率选择和不同的纵横比。 我想给玩家几个分辨率的选择,比如800x600、1024x768和1280x720。这需要这样做,

  • 我正在OpenCV(2.4.8)中创建一个程序,可以读取视频文件并对其进行计算。对于这些计算,我不需要高分辨率的帧,我可以用640*360作为分辨率。 在早期的测试中,我连接了网络摄像头,我使用了: 它完美地调整了图像的大小。现在,我要进入下一步,我想用我的程序来存储视频,而不是一个实时提要(我用来测试)。当我用源文件路径(字符串)更改“0”时,将加载文件,但分辨率仍为1920*1080。 我做错

  • 问题内容: 我需要根据屏幕分辨率更改templateURL,例如,如果我的屏幕宽度小于768px,则必须加载“ templates / browse-content- mobile.html”;如果屏幕宽度大于768px,则必须加载“ templates / browse-content” .html”。 当前使用的代码。 在这里我正在尝试此代码 此代码块正常工作,它根据那里的分辨率加载移动和桌面

  • 功能介绍 获取百度移动统计平台的全部屏幕分辨率列表 接口 https://openapi.baidu.com/rest/2.0/mtj/svc/config/getScreenList?access_token={ACCESS_TOKEN} 请求参数 参数名 类型 描述 样例 access_token string 用户登入后获取的token 1.a6b7dbd428f731035f771b8d

  • 好的,这里有一个奇怪的问题,我有问题(用gcc btw编译) 下面是用于命令提示的Mandelbrot分形生成器的源代码。我以前做过这项工作,我想加快自己的测试速度,看看我能以多快的速度生成命令提示符中实际生成Mandelbrot分形所需的代码。我经常这样做是为了给自己找点乐子 不管怎样,我遇到了一个新问题,我不太明白问题是什么。当分形呈现时,无论我设置了多少次迭代或什么转义值,它都将始终显示为椭

  • 我看过使用PDFBox基于图像DPI提取图像的代码,如下所示 在上面的代码中,我可以指定图像分辨率(150),同时从pdf中提取图像。更高的分辨率,我得到更大的图像作为回报。 现在,我想反转它的意思是在将图像写入PDF时指定图像的分辨率/dpi,但下面的代码没有提供指定dpi的选项吗?有谁能指引我在哪里失踪 在将图像写入pdf时,请告诉我在哪里可以传递分辨率/DPI参数(因为图像大于pdf页面大小