活动(Activity)和碎片(Fragment)在Android开发中占着非常重要的作用,每一个开发者想要开发出丰富多彩的Android项目,那就必须要好好了解这两位小伙伴才行。那么接下来,就让皮卡丘带着大家围观下这两位小伙伴的“搞基”之旅吧。
1、Activity使用Fragment中的方法
这个是比较简单的,首先,因为一般情况下Fragment是依附于Activity的,所以在Activity中可以先获取到Fragment的实例,然后就可以直接调用Fragment中的方法了。我们用代码来验证一下,先建一个MyFragment的类,然后在MyFragment中写一个方法:
public void toastShow() {
Log.i("MyFragment", "去吧皮卡丘");
}
然后在activity中创建MyFragment实例对象,并且调用toastShow()方法:
fragment = new MyFragment();
fragment.toastShow();
OK,执行代码,查看日志
方法执行成功!!!可喜可贺可喜可贺
2、Fragment使用Activity中的方法
所谓好基友,当然不会只是Activity使用Fragment的方法。在Fragment中也可以以类似的途径使用Activity的方法:先以getActivity的方式获取到Activity,然后就可以使用方法了(毕竟好基友,相互赠送礼物的方式比较像也是可以理解的嘛)。但是,这里有一个非常重要的东西要理解,那就是:Fragment中getActivity()获取到的对象不能直接用,必须要类型强转!!!(MainActivity)getActivity()这样才可以!
我们在MainActivity中写一个方法
public String getTestString() {
return "成功执行activity中的方法";
}
然后在MyFragment中调用他
case R.id.button1:
String text1 = ((MainActivity)getActivity()).getTestString();
tv_test.setText(text1);
break;
我们打开模拟器,来看看效果
点击之前
点击之后
方法执行成功!!!可喜可贺可喜可贺
3、Activity响应Fragment中的点击事件
终于到了最激动人心,最基情满满的功能了。
我们试想下这样一种场景:在一个Fragment里面按下一个按钮,然后Activity中根据Fragment中传递过来的参数执行相应的方法。这样的场景其实是非常实用的,我们可以通过接口的方式来实现这样的功能。我们在MyFragment中定义这样的接口
public interface OnButton2ClickListener {
public void OnButton2ClickListener(String showText);
}
@Override
public void onAttach(Activity activity) {
// TODO Auto-generated method stub
super.onAttach(activity);
try {
mListener = (OnButton2ClickListener) activity;
} catch (Exception e) {
// TODO: handle exception
throw new