我知道要将片段中的某些内容传递给它的调用活动,您可以使用onAttach,它具有“activity”参数。您可以将活动设置为变量,稍后再调用其中的接口。因此将数据从片段传递回活动。太棒了。
我想做同样的事情,但这次我有一个标准片段,我想打电话给DialogFragment
,然后让DialogFragment
回复原始片段,但我不能使用onAttach
需要Activity
。
任何人都知道这样做的最佳方法吗?
由于
答案 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的更多信息here 并another 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();
}
}