我在片段中得到了method()
。主机活动中的片段。因此,仅当主机活动位于method()
中时,才需要从片段中调用onDestroy()
。也许应该是一个静态标志?
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
您可以通过SupportFragmentManager通过布局ID,标签或名称获取Fragment。但是,这里最重要的事情是在某些情况下永远无法调用Activity.onDestroy()方法。因此,如果您实现需要执行的代码(例如取消订阅逻辑或删除回调),请谨慎操作。