Activity fragment 交互

Fragment中调用父Activity中方法的简单方式


假如 父Activity的类名叫 ParentActivity,有一个test()方法ide

在Fragment中调用其实很简单,代码以下:布局


ParentActivity parentActivity = (ParentActivity ) getActivity();
parentActivity.test();
this


怎么样是否是超级简单啊!spa


======================================================.net


在Activity中有一个FragmentRight.xml


step1.首先,为了在Activity中可以使用FragmentRight,写了一条:blog


fragmentRight = (FragmentRight) getFragmentManager().findFragmentById(R.id.fragmentright);接口


固然,fragmentright.xml就是FragmentRight的布局文件了。get

写了这条之后,就能够在Activity中使用FragmentRight实例的方法了it


step2.而后,在FragmentRight中我有个按钮,当按它的时候,要触发一些代码。这时,要在FragmentRight中定义一个接口,和一个方法:


// Container Activity must implement this interface

public interface OnMyButtonClickListener {

public void onMyButtonClick();//接口中定义一个方法

}


固然,以后要在须要的地方调用这个方法。我是在按FragmentRight上那个按钮时调用它。个人按钮就叫testButton.

慢着,接口的方法要被调用前,固然要先声明接口类型的成员变量:


private OnMyButtonClickListener mListener;

testButton.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

mListener.onMyButtonClick();

}

});


step3.在FragmentRight的onAttach()方法中给mListener这个成员变量赋个值,否则会出讨厌的nullpointerexception哦。


@Override

public void onAttach(Activity activity)

{

super.onAttach(activity);

try

{

mListener = (OnbtnSendClickListener) activity;//这句就是赋初值了。

}

catch (ClassCastException e)

{

throw new ClassCastException(activity.toString() + "must implement OnbtnSendClickListener");//这条表示,你不在Activity里实现这个接口的话,我就要抛出异常咯。知道下一步该干吗了吧?

}

}



step4.在Activity中实现这个接口:

...... extends Activity implements OnMyButtonClickListener{......

而且,重写该接口中定义的方法吧:


@Override

public void onMyButtonClick()

{

......//在这里该干吗干吗呗。

}