定义一个接口
为了让一个片段最多传达到它的活动,您可以定义片段中的类的接口和活动中实现它。该片段其onAttach()生命周期方法的过程中捕获的接口实现,然后可以调用接口方法,以便与活动通信。
public class FirstFragment extends Fragment {
private OnFragmentSelectedListener mCallback;
// Container Activity must implement this interface
public interface OnFragmentSelectedListener {
public void onArticleSelected(int position);
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
//自定义一个throw如果没有继承就打印
try {
mCallback = (OnFragmentSelectedListener) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString()
+ " 必须继承OnFragmentSelectedListener");
}
}
private void init(){
//在一个按钮里调用接口里的函数
view.findViewById(R.id.abc).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mCallback.onArticleSelect(2);
}
});
}
...
}
继承接口
为了从该Fragment接收事件回调,承载它必须实现在Fragment中定义的接口的方法。
public static class MainActivity extends Activity
implements FirstFragment.OnFragmentSelectedListener{
...
public void onArticleSelected(int position) {
//在方法里调用SecondFragment里的方法实现通信
}
}