在Activity中有一个FragmentRight.
step1.首先,为了在Activity中能够使用FragmentRight,写了一条:
1
|
fragmentRight = (FragmentRight) getFragmentManager().findFragmentById(R.id.fragmentright);
|
当然,fragmentright.xml就是FragmentRight的布局文件了。
写了这条以后,就可以在Activity中使用FragmentRight实例的方法了
step2.然后,在FragmentRight中我有个按钮,当按它的时候,要触发一些代码。这时,要在FragmentRight中定义一个接口,和一个方法:
1
2
3
4
|
// Container Activity must implement this interface
public
interface
OnMyButtonClickListener {
public
void
onMyButtonClick();
//接口中定义一个方法
}
|
当然,之后要在需要的地方调用这个方法。我是在按FragmentRight上那个按钮时调用它。我的按钮就叫testButton.
慢着,接口的方法要被调用前,当然要先声明接口类型的成员变量:
1
2
3
4
5
6
7
|
private
OnMyButtonClickListener mListener;
testButton.setOnClickListener(
new
OnClickListener() {
@Override
public
void
onClick(View v) {
mListener.onMyButtonClick();
}
});
|
step3.在FragmentRight的onAttach()方法中给mListener这个成员变量赋个值,不然会出讨厌的nullpointerexception哦。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
@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{......
并且,重写该接口中定义的方法吧:
1
2
3
4
5
|
@Override
public
void
onMyButtonClick()
{
......
//在这里该干嘛干嘛呗。
}
|
本文转自 glblong 51CTO博客,原文链接:http://blog.51cto.com/glblong/1307721,如需转载请自行联系原作者