仅在主机活动被破坏时如何从片段中调用方法?

问题描述 投票:0回答:2

我在片段中得到了method()。主机活动中的片段。因此,仅当主机活动位于method()中时,才需要从片段中调用onDestroy()。也许应该是一个静态标志?

java android android-lifecycle
2个回答
0
投票
class MyActivity:  AppCompatActivity() {
    override fun onDestroy() {
        super.onDestroy()
        val fragment = supportFragmentManager.findFragmentById(R.id.my_fragment) as MyFragment
        if (fragment != null) {
            fragment.myMethod()
        }
    }
}
class MyFragment: Fragment() {
    fun myMethod() {
    }
}

或使用ViewModel处理活动和片段之间的通信。

https://developer.android.com/topic/libraries/architecture/viewmodel#sharing


0
投票

您可以通过SupportFragmentManager通过布局ID,标签或名称获取Fragment。但是,这里最重要的事情是在某些情况下永远无法调用Activity.onDestroy()方法。因此,如果您实现需要执行的代码(例如取消订阅逻辑或删除回调),请谨慎操作。

© www.soinside.com 2019 - 2024. All rights reserved.