首页 > 解决方案 > getString() 和仅 String 有什么区别?

问题描述

当我使用此代码时

private val defaultUri = Uri.parse("android.resource://com.example.viewpager2demo/drawable/add")

我可以得到正确的 uri 字符串。但是当我尝试类似这样的代码时,

private val defaultUri = Uri.parse(getString(R.string.addImage))

我得到了零点错误。string.xml 定义 R.string.addImage 如下

<string name="addImage">android.resource://com.example.viewpager2demo/drawable/add</string>

内容是一样的,但是第一个是工作,第二个是不工作。有什么不同?日志也是一样的

Log.d("TAG","getString : " + getString(R.string.addImage))
Log.d("TAG", "defaultUri : " +defaultUri.toString())

D/TAG: getString : android.resource://com.example.viewpager2demo/drawable/add
D/TAG: defaultUri : android.resource://com.example.viewpager2demo/drawable/add

标签: android

解决方案


Uri 是一条路径,这就是您收到错误的原因,请尝试将该字符串资源转换为 Uri

private val defaultUri = Uri.parse(getString(R.string.addImage).toUri())

正如迈克所评论的, nullpointerException 是因为您没有在之后初始化您的引用onCreate

要解决这个问题

private lateinit var defaultUri:Uri

在 onCreate() 里面

defaultUri = Uri.parse(getString(R.string.addImage).toUri())

推荐阅读