Kotlin 片段:尝试在空对象引用上调用虚拟方法 'java.lang.String android.content.



我用Intent.ACTION_PICK从图库中拍照。 我在实现这两个活动时已经成功,但在使用片段时发现问题。 我需要一些帮助,拜托。

这里 主要活动.kt

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) {
when (requestCode) {
REQUEST_NEW_CHAT -> {
val name: String = data?.getStringExtra(PARAM_NAME) ?: ""
val phone: String = data?.getStringExtra(PARAM_PHONE) ?: ""
checkNewChatUser(name, phone)
}
//TODO: I.5. Update Status Page
REQUEST_CODE_PHOTO -> statusUpdateFragment?.storeImage(data?.data)
}
}
}

这里 状态更新片段.kt

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
lay_progressbar.setOnTouchListener { v, event -> true }
btn_status.setOnClickListener { onUpdate() }
populateImage(context, imageUrl, img_status)
lay_status.setOnClickListener{
if(isAdded){
(activity as MainActivity).startNewActivity(REQUEST_CODE_PHOTO)
}
}
}
fun storeImage(imageUri: Uri?) {
if (imageUri != null && userId != null) {
//error message : Attempt to invoke virtual method 'java.lang.String android.content.Context.getPackageName()' on a null object reference
try {
Toast.makeText(activity, "Uploading...", Toast.LENGTH_SHORT).show()
lay_progressbar.visibility = View.VISIBLE
}
catch (e:Exception){
e.message
}
/*more code that i hide it...*/
}
}

Alhamdulillah,我已经由Fahru解决了。

MainActivity.kt : 必须在 onActivityResult 中添加此内容

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK) {
when (requestCode) {
REQUEST_NEW_CHAT -> {
val name: String = data?.getStringExtra(PARAM_NAME) ?: ""
val phone: String = data?.getStringExtra(PARAM_PHONE) ?: ""
checkNewChatUser(name, phone)
}
//TODO: I.5. Update Status Page
REQUEST_CODE_PHOTO -> statusUpdateFragment?.storeImage(data?.data,this)
}
}
}

StatusUpdateFragment.kt :必须在storeImage中添加上下文

```
fun storeImage(imageUri: Uri?, context: Context) {
if (imageUri != null && userId != null) {
try {
Toast.makeText(context, "Uploading...", Toast.LENGTH_SHORT).show()
lay_progressbar.visibility = View.VISIBLE
}
catch (e:Exception){
e.message
}
//more code hidden
}
```

相关内容