Android: 从DialogFragment 回调片段?

Android: Callback to fragment from DialogFragment?

我知道要将片段中的某些内容传递回其调用 activity 您可以使用具有 "activity" 参数的 onAttach。您可以将 activity 设置为变量并稍后在其上调用接口。因此将数据从片段传回 activity。都很棒。

我想做同样的事情,但这次我有一个标准片段,我想调用一个 DialogFragment,然后让 DialogFragment 回调到原始片段,但我可以't use onAttach 是想要 Activity.

有人知道这样做的最佳方法吗?

谢谢

从那里联系另一个片段的一种方法是在 Activity:

中实现的方法中访问它
//In your Activity...

@Override
public void callbackFromFragmentA(){
    FragmentB fragment = (FragmentB) getFragmentManager.findFragmentById(android.R.id.content);
    if (fragment != null) {
        fragment.callFragmentMethod();
    }
}

显然你可以在你的 activity 中制作东西 public 并从你的片段中设置它们。但是你必须保留对 activity 的引用,并且可能有不需要的 public 变量 and/or 设置器。

您可以使用 EventBus 而您不需要这些。

在您的activity中您需要注册一个活动

@Override
public void onStart() {
    super.onStart();
    EventBus.getDefault().register(this);
}

@Override
public void onStop() {
    EventBus.getDefault().unregister(this);
    super.onStop();
}

// This method will be called when a MessageEvent is posted
public void onEvent(MessageEvent event){
    Toast.makeText(getActivity(), event.message, Toast.LENGTH_SHORT).show();
}

然后您可以简单地从您的片段或您喜欢的任何地方调用您的事件,

EventBus.getDefault().post(new MessageEvent("Hello everyone!"));

可以找到更多关于 EventBus 的信息here 还有 another possibly useful tutorial.