【发布时间】:2019-08-13 07:04:27
【问题描述】:
我正在编写一个电视和手机布局使用不同方法的应用程序,它们共享一些常用方法。我将常用方法放入一个单独的类中。在我调用通用方法之前,将“activity”传递给通用类,从通用方法中调用“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,没有记录任何错误。我可以知道如何修改它以使其工作吗?
【问题讨论】:
标签: android kotlin onactivityresult startactivityforresult