使用相同的DialogFragment将数据传递回Activity和fragment

时间:2018-02-02 19:22:12

标签: android android-activity fragment listener

我希望能够使用相同的Dialogfragment将数据传回用于启动它的activity。我还使用fragment启动它。如何实现一个适用于fragmentactivity的侦听器?

以下是我在DialogFragment中设置界面的代码:

public interface RiskListener {  
     void riskAdded(Geometry envelope, Geometry point);  
     void riskUpdated();  
}

private RiskListener listener;  

@Override  
public void onCreate(@Nullable Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState);  
    listener = (RiskListener) getTargetFragment();  
}  

我正在片段中创建DialogFragment,如下所示:

 FragmentManager fm = getFragmentManager();  
 RiskDialogFragment riskDialogFragment = RiskDialogFragment.newInstance();  
 if (!riskDialogFragment.isVisible()) {  
     riskDialogFragment.setTargetFragment(context, 0);  
     riskDialogFragment.show(fm, "RiskDialog");  
}  

如何设置DialogFragment以使用Activity

1 个答案:

答案 0 :(得分:1)

  1. 您的活动和片段都应该实现RiskListener
  2. 在活动中,将片段投射到RiskListener
  3. 在片段中执行以下操作:riskListener = (RiskListener) getActivity();onAttach()方法应该是最佳选择)
  4. 注意:我的建议是花些时间学习一些MVVM和RxAndroid。它将帮助您解决非常容易和可靠的问题。 Here是一篇文章,但您可以在网上找到更多内容。