Android:从DialogFragment回调片段?

时间:2015-08-06 20:19:51

标签: android android-fragments fragment android-dialogfragment

我知道要将片段中的某些内容传递给它的调用活动,您可以使用onAttach,它具有“activity”参数。您可以将活动设置为变量,稍后再调用其中的接口。因此将数据从片段传递回活动。太棒了。

我想做同样的事情,但这次我有一个标准片段,我想打电话给DialogFragment,然后让DialogFragment回复原始片段,但我不能使用onAttach需要Activity

任何人都知道这样做的最佳方法吗?

由于

2 个答案:

答案 0 :(得分:2)

显然,您可以在活动中公开内容并从片段中设置它们。但是,您必须保留对您的活动的引用,并可能包含不需要的公共变量和/或设置器。

您可以使用EventBus而不需要任何此类内容。

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

@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的更多信息hereanother possibly useful tutorial

答案 1 :(得分:1)

联系其他片段的一种方法是使用Activity中的实施方法访问它:

//In your Activity...

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