【问题标题】:onActivityForResult doesn't get calledonActivityForResult 没有被调用
【发布时间】:2019-05-04 19:50:45
【问题描述】:

在这段代码中,onActivityForResult 永远不会被调用。

我的活动:

class PersonalInformationActivity : AppCompatActivity(), View.OnClickListener {

    private val READ_REQUEST_CODE = 2

    lateinit var user: User
    lateinit var email: EditText
    lateinit var phoneNumber: EditText
    lateinit var username: EditText
    lateinit var profilePicture: ImageView
    lateinit var photoURI: Uri

 //someCode

    override fun onClick(v: View) {
        when (v.id) {
            R.id.profilePicture -> {
                importPicture()
                if (photoURI != null) {
                    try {
                        val file = FileUtil.from(this, photoURI)
                        RequestAddUserProfilePicture.MakeRequestTask(this, this).execute(user.token, file, photoURI.path!!.substring(photoURI.path!!.lastIndexOf("/") + 1))
                        Log.d("file", "File...:::: uti - " + file.path + " file -" + file + " : " + file.exists())

                    } catch (e: IOException) {
                        e.printStackTrace()
                    }

                } else {
                    Toast.makeText(this, "need pic", Toast.LENGTH_LONG).show()
                }
            }
        }
    }

    private fun importPicture() {

        val intent = Intent(Intent.ACTION_PICK,
                android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI)

        setResult(Activity.RESULT_OK)
        startActivityForResult(intent, READ_REQUEST_CODE)
    }

    public override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        if (requestCode == READ_REQUEST_CODE && resultCode == Activity.RESULT_OK) {
            if (data != null) {
                photoURI = data.data
                Log.d("URI", "Uri:" + photoURI.toString())
            }
        }
    }
}

我已阅读此答案:https://stackoverflow.com/a/19546302/7937498 并尝试了技巧,但没有解决我的问题。

【问题讨论】:

  • 致电getActivity().startActivityForResult(intent, READ_REQUEST_CODE);
  • PersonalInformationActivity 是否包含任何 Fragment?
  • @MuhammadMuzammilSharif 我调用了 this.startActivityForResult(intent, READ_REQUEST_CODE) 但它不起作用
  • @BachVu 一点也不,这是一个非常简单的活动。
  • 检查结果代码resultCode == activity.RESULT_OK。应该是resultCode == Activity.RESULT_OK

标签: android kotlin onactivityresult


【解决方案1】:

对活动和片段使用不同的 REQUEST_CODES。我试了你的代码,尝试了不同的请求代码101和102,我得到了结果。

【讨论】:

  • 终于不行了。它只工作了一次。我也试过 2 模拟器它不起作用。我尝试使用请求代码 101、102、10003...
  • 您尝试了 101 的活动请求和 102 的片段?
  • 我刚刚尝试过,101 用于我的活动,102 用于我的片段。它不起作用
  • 我在另一台物理设备(华为)上尝试过也无法正常工作。您尝试了哪个 API?
  • 棒棒糖,微麦克
【解决方案2】:

这不是真正的解决方法,但我将它从 Kotlin 重构为 Java(完全相同的代码)并且它也能正常工作......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 2019-03-31
    • 2012-12-16
    相关资源
    最近更新 更多