ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

迁移到AndroidX后出现SingleLiveEvent问题

2019-07-27 00:24:13  阅读:720  来源: 互联网

标签:android android-studio android-livedata


使用Android studio 3.2.1迁移到AndroidX后,由于此错误,我无法运行应用程序:

SingleLiveEvent.java:29: error: name clash: observe(LifecycleOwner,Observer<T#1>) in SingleLiveEvent and observe(LifecycleOwner,Observer<? super T#2>) in LiveData have the same erasure, yet neither overrides the other
    public void observe(LifecycleOwner owner, final Observer<T> observer) {
                ^
  where T#1,T#2 are type-variables:
    T#1 extends Object declared in class SingleLiveEvent
    T#2 extends Object declared in class LiveData
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

我用谷歌搜索,找到了解决其他问题的方法,但如何优雅地解决这个问题呢?我不想在我使用单个直播活动的每个地方重构整个应用程序.

解决方法:

我发现了这个问题.
LiveData提供了这个:

public void observe(@NonNull LifecycleOwner owner, @NonNull Observer<? super T> observer)

而SingleLiveEvent提供:

public void observe(LifecycleOwner owner, final Observer<T> observer)

解决方案是在SingleLiveEvent中更改方法签名以匹配LiveData

标签:android,android-studio,android-livedata
来源: https://codeday.me/bug/20190727/1549032.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有