从 dialogfragment 调用 onBackPressed 完成 activity
Calling onBackPressed from a dialogfragment finishes the activity
我有一个对话框片段,上面有一个关闭按钮。
这个对话框是从两个不同的活动中调用的。一个用作简单片段,一个用作对话片段。
在它的 onClick 方法中,我调用 requireActivity.onBackPress()
这样它就会关闭对话框。
我不想调用 dismiss,因为我有一个用例,我希望调用 activity 来处理它(显示确认对话框)。
在显示为对话框片段的 activity 中,调用 onBackPress
不仅会关闭对话框,还会完成 activity :scary_face
不过按下实际的后退按钮只是将其关闭。
想知道我在这里遗漏了什么吗?
对话片段中的代码:
viewBinding.closeBtn.setOnClickListener {
requireActivity().onBackPressed()
}
启动对话框片段的代码
SharePatientDialogFragment.newInstance(shareData)
.show(context.supportFragmentManager, "share")
您正在调用 activity 的 onBackPressed()
,而不是从 DialogFragment。
因此,您的 activity 正在关闭,因此对话框也会关闭。
要修复它,您必须调用对话框片段的 onBackPressed()
以确保对话框片段被关闭。
Fragment
不具有 onBackPressed()
方法,但 Dialog
class 具有,因此您需要检查它是否是一个对话框,然后调用该方法,如果可用。
我有一个对话框片段,上面有一个关闭按钮。
这个对话框是从两个不同的活动中调用的。一个用作简单片段,一个用作对话片段。
在它的 onClick 方法中,我调用 requireActivity.onBackPress()
这样它就会关闭对话框。
我不想调用 dismiss,因为我有一个用例,我希望调用 activity 来处理它(显示确认对话框)。
在显示为对话框片段的 activity 中,调用 onBackPress
不仅会关闭对话框,还会完成 activity :scary_face
不过按下实际的后退按钮只是将其关闭。
想知道我在这里遗漏了什么吗?
对话片段中的代码:
viewBinding.closeBtn.setOnClickListener {
requireActivity().onBackPressed()
}
启动对话框片段的代码
SharePatientDialogFragment.newInstance(shareData)
.show(context.supportFragmentManager, "share")
您正在调用 activity 的 onBackPressed()
,而不是从 DialogFragment。
因此,您的 activity 正在关闭,因此对话框也会关闭。
要修复它,您必须调用对话框片段的 onBackPressed()
以确保对话框片段被关闭。
Fragment
不具有 onBackPressed()
方法,但 Dialog
class 具有,因此您需要检查它是否是一个对话框,然后调用该方法,如果可用。