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()

{

......//在這裏該幹嗎幹嗎唄。

}

相關文章
相關標籤/搜索