fragment和自己的activity通讯

在用到fragment的时候,老是会遇到一个问题,就是fragment与activity之间的通信。下面就来记录一下 activity和fragment之间 通过实现接口来互相通信的方法。
1. activity 向fragment发出通信,就这么写:

private OnMainListener mainListener;        // 绑定接口

@Override

public void onAttachFragment(Fragment fragment) {

try {        mainListener = (OnMainListener) fragment;        } catch (Exception e) {        throw new ClassCastException(this.toString() + " must implement OnMainListener");        }

super.onAttachFragment(fragment);        }        // 接口

public interface OnMainListener {        public void onMainAction();        }

  1. onMainAction 方法是activity向 fragment发出通信的方法,里面可以放参数, 在要发出通信的地方直接调用该方法即可。

复制代码

  1. 在对应的fragment里面要这么写:

复制代码

public class MyFragment extends Fragment implements OnMainListener { 
      public void onMainAction() { 
         //这里是实现通信的接口

2. fragment向activity 发出通信:(和前面差不多)

  1. private OnFragmentListener mListener;
     @Override        public void onAttach(Activity activity) {

    super.onAttach(activity);      
             try {        mListener = (OnFragmentListener) activity;       
    } catch (ClassCastException e) {       
    throw new ClassCastException(activity.toString() + " must implement OnFragmentListener");       
    }     
      }

    public interface OnFragmentListener {        public void onFragmentAction(int flag);        }

在activity中 实现接口:   public   class  MainActivity  extends  Activity  implements  OnFragmentListener{

………………

public void onFragmentAction(int flag) { 
两者都是通过接口的实现来进行通信的,重要的地方就是分别在onAttachFragment 和 onAttach方法中进行接口绑定。 通信还有其他方法的,比如广播、静态handler等,这里就不赘述了。
end~

http://www.colabug.com/thread-1124396-1-1.html

时间: 2024-09-30 14:21:36

fragment和自己的activity通讯的相关文章

Android Fragment详解(五):Fragment与Activity通讯

与activity通讯 尽管fragment的实现是独立于activity的,可以被用于多个activity,但是每个activity所包含的是同一个fragment的不同的实例. Fragment可以调用getActivity()方法很容易的得到它所在的activity的对象,然后就可以查找activity中的控件们(findViewById()).例如: ViewlistView =getActivity().findViewById(R.id.list);同样的,activity也可以通过

[转]Fragment跳转至Activity或者Fragment

1.Fragment跳转至Activity 从fragment中跳转和从activity中跳转类似,只不过你要先通过fragment的getActivity方法获取到显示这个fragment的activity,具体代码是这样的: Button button = view.findViewById(xxx); button.setOnClickListener(new View.OnClickListener(     onClick(View view) {         startActiv

Android系列之Fragment(一)----Fragment加载到Activity当中

Android系列之Fragment(一)----Fragment加载到Activity当中 ?[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3978989.html 联系方式:[email protected] [正文] Android上的界面展示都是通过Activity实现的,Activity实在是太常用了.但是Activity也有它的局限性

Fragment not attached to Activity

当我点击返回按钮,返回桌面的时候,就会报错,Fragment not attached to Activity这个错误,看logcat里是因为 Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.battery_full);是因为用到了getResources()这个方法, 原因是这样的Fragment在Activity中加载前就调用了或者是在Activity消失后继续调用getResources()方法

Fragment not attached to Activity 异常

1.关于Fragment(XXFragment) not attached to Activity 异常.出现该异常,是因为Fragment的还没有Attach到Activity时,调用了如getResource()等,需要上下文Content的函数.解决方法,就是等将调用的代码写在OnStart()中.网上还有几处这样的参考:http://stackoverflow.com/questions/10919240/fragment-myfragment-not-attached-to-activ

Fragment(9)FragmentActivity和Activity的区别

getSupportFragmentManager()  ,FragmentActivity用在android sdk 3以下. getFragmentManager() + Activity 用在android sdk 3以上. stackoverflow的原文 A FragmentActivity is a subclass of Activity that was built for the Android Support Package. The FragmentActivity cla

(转)Fragment、FragmentActivity与Activity的关系

总结: 1.FragmentActivity继承自Activity,用来解决3.0(API:11)之前没有fragment的兼容性问题,所以在使用的时候需要导入v4 support包,同时继承FragmentActivity,这样在Activity中就能嵌入Fragment来实现布局效果 2.当然3.0之后就可以直接继承自Activity,直接使用Fragment 3.获得FragmentManager的写法是不同的.3.0以下:getSupportFragmentManager()  ,3.0

ActionBar Fragment的一个sample activity

public class MainActivity extends ActionBarActivity { private static ActivityManager am; private static List<RunningAppProcessInfo> appList; private static List<RunningTaskInfo> taskList; @Override protected void onCreate(Bundle savedInstanceS

Fragment的startActivityForResult和Activity的startActivityForResult的区别

2016-08-30 18:22:33 前提:我们的APP要兼容Api level 11以前的,所以必须用FragmentActivity 1.对于Fragment的,我们很多时候都会在Activity中通过如下方式使用: Fragment是Android3.0以后才引入的东西,为了向下兼容,在support v4包中加入了FragmentActivity,FragmentActivity和Activity的区别是:FragmentActivity中只能使用getSupportFragmentM