我刚刚在android studio中将Android Q SDK更新到了修订版2,现在在从哈希图中获取值时出现错误
it
是HashMap<String,String>
,在我在android studio中将其更新为Q版本2之前,这段代码是好的。
这是我的HashMap的来源
val map = HashMap<String,String>()
map["owner"] = shipment.owner
map["current"] = signedInUser
shipmentOwnedLiveData.postValue(map)
我发现了一个与this类似的问题,但与Android无关,并且已有几年历史了。
任何人都知道问题是什么或如何解决?
编辑:
似乎它也破坏了ArrayList,因为在集合上调用.contains
或.remove
也会引发歧义错误。
所有这些似乎都有重复的方法
编辑2:
看起来我不是唯一遇到此问题的人
答案 0 :(得分:7)
这是最新的Android SDK 29版本中的一个错误,直到Google撤消了更新。参见https://issuetracker.google.com/issues/139041608。
如果很不幸无法安装 <lifecycleMappingMetadata>
<pluginExecutions>
<pluginExecution>
<pluginExecutionFilter>
...
</pluginExecutionFilter>
</pluginExecution>
<pluginExecution>
<pluginExecutionFilter>
...
版本2,则必须降级到版本1。您可以先使用platforms;android-29
卸载软件包工具。
$ANDROID_HOME/tools/bin/sdkmanager
然后通过从sdkmanager --uninstall "platforms;android-29"
中删除包含"platforms;android-29"
的{{1}}元素来从缓存中删除修订版2:
<major>2</major>
将其他$HOME/.android/cache/sdkbin-1_b735609c-repository2-1_xml
元素保留为<remotePackage path="platforms;android-29">
<!--Generated from bid:5747142, branch:qt-release-->
<type-details xsi:type="sdk:platformDetailsType">
<api-level>29</api-level>
<codename></codename>
<layoutlib api="15"/>
</type-details>
<revision>
<major>2</major>
</revision>
<display-name>Android SDK Platform 29</display-name>
<uses-license ref="android-sdk-license"/>
<channelRef ref="channel-0"/>
<archives>
<archive>
<!--Built on: Tue Jul 23 11:56:59 2019.-->
<complete>
<size>78259143</size>
<checksum>c8b1361cc03309a8113de92f93471524fa0c36f7</checksum>
<url>platform-29_r02.zip</url>
</complete>
</archive>
</archives>
</remotePackage>
,然后重新安装软件包:
"platforms;android-29"
答案 1 :(得分:3)
我遇到了同样的问题,找到了HashMap和ArrayList的解决方法: 您可以将地图实例化为
val map: MutableMap<String, String> = HashMap()
对于ArrayList
val list: MutableList<String> = ArrayList()
答案 2 :(得分:2)
根据问题跟踪器中的bug report,Google已将r2
恢复为r1
API 29 r2已从Studio SDK Manager暂时回滚,直到 找出根本原因并加以解决。
因此,只需从adk管理器中卸载/重新安装Q,您就应该回到r1
答案 3 :(得分:-1)
我遇到了同样的问题,目前,作为一种解决方法,我使用的是Kotlin扩展函数getOrElse,如果地图不包含给定的键,它可以为您提供默认值。