getString()和仅String之间有什么区别?

时间:2020-04-06 12:07:48

标签: android

当我使用此代码时

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

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

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

我得到了nullpoint错误。 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

1 个答案:

答案 0 :(得分:0)

Uri是一条路径,这就是为什么出现错误的原因,请尝试将字符串资源转换为Uri

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

正如迈克(Mike)所说,nullpointerException是因为您没有在onCreate之后初始化您的引用

要修复

private lateinit var defaultUri:Uri

在onCreate()内部

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