仅当主机 activity 被销毁时如何从片段调用方法?
How to call method from fragment only if host activity was destroyed?
我在片段中得到了一个method()
。主机 activity 中的片段。因此,仅当主机 activity 在 onDestroy()
中时,我才需要从片段中调用 method()
。也许它应该是一个静态标志?
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 来处理 activity 和片段之间的通信。
https://developer.android.com/topic/libraries/architecture/viewmodel#sharing
您可以通过SupportFragmentManager,通过layout id、tag 或name 获取一个Fragment。
但这里最重要的是在某些情况下 Activity.onDestroy() 方法永远不会被调用。因此,如果您实现需要执行的代码,例如取消订阅逻辑或删除回调,请务必小心。
我在片段中得到了一个method()
。主机 activity 中的片段。因此,仅当主机 activity 在 onDestroy()
中时,我才需要从片段中调用 method()
。也许它应该是一个静态标志?
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 来处理 activity 和片段之间的通信。
https://developer.android.com/topic/libraries/architecture/viewmodel#sharing
您可以通过SupportFragmentManager,通过layout id、tag 或name 获取一个Fragment。 但这里最重要的是在某些情况下 Activity.onDestroy() 方法永远不会被调用。因此,如果您实现需要执行的代码,例如取消订阅逻辑或删除回调,请务必小心。