![](/img/trans.png)
[英]Android 8.1 Closes Activity when startActivityForResult() is called
[英]Android activity startActivityForResult not being called
我正在尝试获取一个文件并将该文件传递给Firebase并将其存储在我的存储桶中,但是由于某些原因,即使按如下所示将android:launchMode="singleTop"
属性添加到清单文件后,我的startActivityForResult也没有被调用另一个答案,也没有在应该启动意图的按钮单击事件上使用kotlin静态函数调用。 请注意,两者都在同一活动中!
这是我的按钮单击处理程序:
override fun onCreate(savedInstanceState: Bundle?) {
btnImage.setOnClickListener {
val intent = Intent()
intent.action = Intent.ACTION_GET_CONTENT
// set the intent type
intent.type = "image/*"
// accept only local content
intent.putExtra(Intent.EXTRA_LOCAL_ONLY, true)
startActivityForResult(Intent.createChooser(intent, "Insert Picture"), PICTURE_RESULT)
}
}
这是我的startAtivityForResult函数:
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
// super.onActivityResult(requestCode, resultCode, data)
if (resultCode == PICTURE_RESULT && resultCode == Activity.RESULT_OK) {
if (data != null) {
val imageUri : Uri = data.data!!
val ref : StorageReference = FirebaseUtil.storageRef!!.child(imageUri.lastPathSegment!!)
ref.putFile(imageUri)
{
} else {
Log.d("IMAGE", resultCode.toString())
Toast.makeText(this, "Upload failure", Toast.LENGTH_LONG).show()
}
}
}
Android活动startActivityForResult没有被调用
您需要在onActivityResult
内部调用super.onActivityResult(requestCode, resultCode, data)
您已在onActivityResult
注释了super.onActivityResult(requestCode, resultCode, data)
的代码
从onActivityResult
内部的super.onActivityResult(requestCode, resultCode, data)
删除//
另外,使用这个
if (resultCode == Activity.RESULT_OK && requestCode == PICTURE_RESULT)
对此有所了解
if (resultCode == PICTURE_RESULT && resultCode == Activity.RESULT_OK)
样本代码
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode == Activity.RESULT_OK && requestCode == PICTURE_RESULT) {
if (data != null) {
val imageUri : Uri = data.data!!
val ref : StorageReference = FirebaseUtil.storageRef!!.child(imageUri.lastPathSegment!!)
ref.putFile(imageUri)
{
} else {
Log.d("IMAGE", resultCode.toString())
Toast.makeText(this, "Upload failure", Toast.LENGTH_LONG).show()
}
}
}
在您的if语句中将resultCode == PICTURE_RESULT更改为:requestCode == PICTURE_RESULT。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.