Android 显示来自片段的对话框时,未调用该片段
我正在展示一个片段中的一个片段。这样做的目的是在片段内部获得对blottomSheetDialogFragment的回调,而不是活动,所以我希望在内部接收片段Android 显示来自片段的对话框时,未调用该片段,android,android-fragments,android-dialogfragment,fragmentmanager,Android,Android Fragments,Android Dialogfragment,Fragmentmanager,我正在展示一个片段中的一个片段。这样做的目的是在片段内部获得对blottomSheetDialogFragment的回调,而不是活动,所以我希望在内部接收片段 override fun onAttachFragment(childFragment: Fragment?) { super.onAttachFragment(childFragment) callback = childFragment as? Callback } 未调用此方法。在显示对话框
override fun onAttachFragment(childFragment: Fragment?) {
super.onAttachFragment(childFragment)
callback = childFragment as? Callback
}
未调用此方法。在显示对话框时,我尝试使用fragmentManager和childFragmentManager来查看是否可以调用片段,但没有成功
AccountBottomSheetDialog dialog = AccountBottomSheetDialog.Companion.newFragment();
dialog.show(getChildFragmentManager(), AccountBottomSheetDialog.Companion.getTAG());
AccountBottomSheetDialog dialog = AccountBottomSheetDialog.Companion.newFragment();
dialog.show(getFragmentManager(), AccountBottomSheetDialog.Companion.getTAG());
有人知道怎么打电话吗
谢谢。无法直接回答您的问题,但以下是您可以采取的解决方法:
newFragment
的参数传递setTargetFragment
)getTargetFragment()
在代码中使用,并将其转换为您喜欢的任何接口(当然是父片段实现的接口)注:要使上述方法起作用,父项和子项的片段管理器必须相同。无法直接回答您的问题,但以下是您可以采取的解决方法:
newFragment
的参数传递setTargetFragment
)getTargetFragment()
在代码中使用,并将其转换为您喜欢的任何接口(当然是父片段实现的接口)注:要使上述方法起作用,片段管理器对于父对象和子对象必须是相同的。我认为它之所以不调用
DialogFragment
,是因为DialogFragment
控制其生命周期和其他方法重写与普通方法重写不同,请参阅
如果您只是想回调父片段,您可以覆盖对话框片段
中的onAttach
方法,并使用上下文参数作为回调(强制转换),或者在对话框片段
中设置回调的公共方法,在创建片段之后,您将调用它
onAttach
方法:
override fun onAttach(context: Context?) {
super.onAttach(context)
callback = context as? Callback
}
公共回调设置程序方法:
//parent fragment: after initializing it
childFragment.setCallback(this@ParentFragment)//or pass in other callbacks
//child fragment:
fun setCallback(callback: Callback) {
this.callback = callback
}
我认为它不调用
DialogFragment
的原因是DialogFragment
控制其生命周期和其他方法重写的方式与普通方法不同,请参阅
如果您只是想回调父片段,您可以覆盖对话框片段
中的onAttach
方法,并使用上下文参数作为回调(强制转换),或者在对话框片段
中设置回调的公共方法,在创建片段之后,您将调用它
onAttach
方法:
override fun onAttach(context: Context?) {
super.onAttach(context)
callback = context as? Callback
}
公共回调设置程序方法:
//parent fragment: after initializing it
childFragment.setCallback(this@ParentFragment)//or pass in other callbacks
//child fragment:
fun setCallback(callback: Callback) {
this.callback = callback
}
可能有点晚,但现在是2019年,支持库
androidx.appcompat:appcompat:1.1.0
如果在子片段管理器中使用variant,则在我等待时调用子片段。
下面是关于Kotlin的正确代码片段
ChildInfoDialog.getInstance(it.data).show(childFragmentManager, ChildInfoDialog.TAG)
可能有点晚,但现在是2019年,支持库androidx.appcompat:appcompat:1.1.0
如果在子片段管理器中使用variant,则在我等待时调用子片段。
下面是关于Kotlin的正确代码片段
ChildInfoDialog.getInstance(it.data).show(childFragmentManager, ChildInfoDialog.TAG)
onAttach方法我将只获取活动作为上下文,而不是片段。onAttach方法我将只获取活动作为上下文,而不是片段。