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)
}