首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Kotlin片段:尝试对null对象引用调用虚拟方法“”java.lang.String android.content.Context.getPackageName()“”

Kotlin片段:尝试对null对象引用调用虚拟方法“”java.lang.String android.content.Context.getPackageName()“”
EN

Stack Overflow用户
提问于 2020-07-02 09:04:18
回答 1查看 123关注 0票数 0

我使用Intent.ACTION_PICK从画廊拍照。我在实现这两个活动时已经成功了,但在使用fragment时发现了问题。我需要一些帮助,谢谢。

这里是MainActivity.kt

代码语言:javascript
运行
复制
    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)
            }
        }
    }

这里是StatusUpdateFragment.kt

代码语言:javascript
运行
复制
    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...*/
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2020-07-02 09:59:15

真主啊,我已经被法鲁解决了。

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

代码语言:javascript
运行
复制
   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添加上下文

代码语言:javascript
运行
复制

fun storeImage(imageUri: Uri?,context: Context) {

代码语言:javascript
运行
复制
if (imageUri != null && userId != null) {
代码语言:javascript
运行
复制
    try {
代码语言:javascript
运行
复制
            Toast.makeText(context, "Uploading...", Toast.LENGTH_SHORT).show()
代码语言:javascript
运行
复制
            lay_progressbar.visibility = View.VISIBLE
代码语言:javascript
运行
复制
    }
代码语言:javascript
运行
复制
    catch (e:Exception){
代码语言:javascript
运行
复制
        e.message
代码语言:javascript
运行
复制
    }
代码语言:javascript
运行
复制
//more code hidden

}

代码语言:javascript
运行
复制
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62687446

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档