我想在我的片段和底页中添加一个界面,当底页完成一个动作(比如选择一个按钮)时,它会在我的后台片段中调用但是当我调用interface时它会返回null并且在我的动作完成时不会调用!
这是我填写界面的代码,但条件从未调用过:
router-outlet
我的代码:
if(responseListener != null){
responseListener.onData( 200,message);
}
所以我不能在另一个片段中调用接口。 (因为它从不打电话)
答案 0 :(得分:1)
您应该在BottomSheet的 onAttach 方法中初始化您的界面实例:
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
responseListener = (ResponseListener) getParentFragment();
} catch(Exception e) {
//handle exception
}
}
请注意,如果要从片段显示BottomSheet对话框并在片段中获取回调,则需要使用 getChildFragmentManager() 而不是< strong> getFragmentManager() 调用。
如果您使用 getFragmentManager() 进行展示,则会在 onAttach 方法中获得强制转换异常。
查看this链接,了解ChildFragmentManager和FragmentManager之间的区别。