当我使用此代码时
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
答案 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())