在Fragment类中,有个方法 public void onAttach(Activity activity),在子Fragment中重写该方法,从该方法的参数中可以看出,该方法中的Activity是加载Fragment的Activity,所以可以通过该方法寻找Fragment的Activity;
在Activity类中,有个方法 public void onAttachFragment(Fragment fragment),api中是这么描述该方法的作用:
/**
* Called when a fragment is attached to the activity.
*/
所以在子Activity中重写该方法,可以通过该方法寻找Activity所加载的Fragment ;
可以定义两个接口,例如:
public interface GetActivityMethod {
void getActivityMethod();
}
public interface GetFragmentMethod {
void getFragmentMethod();
}
Activity实现GetActivityMethod接口,Fragment实现GetFragmentMethod接口;在onAttch(Activity activity)和 onAttachFragment(Fragment fragment)方法中,分别如下所示:
private GetActivityMethod activityMethod;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
activityMethod= (GetActivityMethod) activity;
} catch (Exception e) {
e.printStackTrace();
}
}
private GetFragmentMethod getFragmentMethod;
@Override
public void onAttachFragment(Fragment fragment) {
super.onAttachFragment(fragment);
try {
getFragmentMethod= (GetFragmentMethod) fragment;
} catch (Exception e) {
e.printStackTrace();
}
}
之后就可以在想调用的地方调用相应的接口方法了!如在Activity中调用Fragment 的方法
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (getFragmentMethod!=null)getFragmentMethod.getFragmentMethod();
}
});