onActivityResult 在从通用方法启动 ActivityForResult 时不会触发
onActivityResult is not triggered when startActivityForResult from a common method
我正在编写一个应用程序,其中 TV 和 phone 布局使用不同的方法,并且它们共享一些通用方法。我把常用的方法放在一个单独的class中。在我调用公共方法之前,"activity" 被传递给公共方法 class,"startActivityForResult" 从公共方法中调用。但是,finish() 不会在调用 "Activity".
时触发 onActivityResult()
MainFragment.kt
class MainFragment : BrowseFragment() {
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
TVHandler.activity = activity
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
//not triggered
}
}
TVHandler.kt
import androidx.core.app.ActivityCompat.startActivityForResult
class TVHandler{
fun play(item: Movie, extra_url: String = ""){
val intent = Intent(activity, PlaybackActivity::class.java)
intent.putExtra("item", item)
intent.putExtra("url", url)
startActivityForResult(activity, intent, 0, null)
}
companion object {
lateinit var activity: Activity
}
}
PlaybackActivity.kt
class PlaybackActivity : FragmentActivity() {
fun channelSwitch(direction: String, showMessage: Boolean){
val intent = Intent()
intent.putExtra("action", "switch")
intent.putExtra("direction", direction)
intent.putExtra("showMessage", showMessage)
this.setResult(Activity.RESULT_OK, intent)
finish()
}
}
play() 被调用。某些动作触发了 ChannelSwitch()。但是,不会触发 onActivityResult()。显示 MainActivity,没有记录任何错误。我可以知道如何修改它以使其工作吗?
将 onActivityResult
放入承载该片段的 activity 中,以便它可以将值传递给您的片段
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
}
我正在编写一个应用程序,其中 TV 和 phone 布局使用不同的方法,并且它们共享一些通用方法。我把常用的方法放在一个单独的class中。在我调用公共方法之前,"activity" 被传递给公共方法 class,"startActivityForResult" 从公共方法中调用。但是,finish() 不会在调用 "Activity".
时触发 onActivityResult()MainFragment.kt
class MainFragment : BrowseFragment() {
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
TVHandler.activity = activity
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
//not triggered
}
}
TVHandler.kt
import androidx.core.app.ActivityCompat.startActivityForResult
class TVHandler{
fun play(item: Movie, extra_url: String = ""){
val intent = Intent(activity, PlaybackActivity::class.java)
intent.putExtra("item", item)
intent.putExtra("url", url)
startActivityForResult(activity, intent, 0, null)
}
companion object {
lateinit var activity: Activity
}
}
PlaybackActivity.kt
class PlaybackActivity : FragmentActivity() {
fun channelSwitch(direction: String, showMessage: Boolean){
val intent = Intent()
intent.putExtra("action", "switch")
intent.putExtra("direction", direction)
intent.putExtra("showMessage", showMessage)
this.setResult(Activity.RESULT_OK, intent)
finish()
}
}
play() 被调用。某些动作触发了 ChannelSwitch()。但是,不会触发 onActivityResult()。显示 MainActivity,没有记录任何错误。我可以知道如何修改它以使其工作吗?
将 onActivityResult
放入承载该片段的 activity 中,以便它可以将值传递给您的片段
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
}