Fragment与FragmentActivity间的数据通讯详细解决方案

来源:互联网 发布:nginx 判断请求参数 编辑:程序博客网 时间:2024/05/21 21:44

1.首先定义一个接口:

public interface IFragmentDataListener {public void transferMessage(); }


2.然后Fragment和FragmentActivity分别取实现IFragmentDataListener接口:

public class CompanyContactsFragment extends BaseFragment<CompanyContactsFragment> implements IFragmentDataListener

public class CompanyActivity extends BaseFragmentActivity<CompanyActivity> implements IFragmentDataListener


3.如果FragmentActivity中调用Fragment的方法:

          在FragmentActivity中:

private IFragmentDataListener mFragmentDataListener; @Overridepublic void onAttachFragment(Fragment fragment) {// TODO Auto-generated method stubtry {mFragmentDataListener = (IFragmentDataListener) fragment;} catch (Exception e) {// TODO: handle exception}super.onAttachFragment(fragment);}@Overridepublic void transferMessage() {//在这里这个不用管// TODO Auto-generated method stubSystem.out.println("由Fragment传输过来的信息"); }        mFragmentDataListener.transferMessage();//在需要调用的地方,调用这个方法
        在Fragment中:

@Overridepublic void transferMessage() {// TODO Auto-generated method stubSystem.out.println("由Activity传输过来的信息");  loadData(2);}


4.在Fragment中调用FragmentActivity中的方法:

        在FragmentActivity中:

        @Overridepublic void transferMessage() {// TODO Auto-generated method stubSystem.out.println("由Fragment传输过来的信息"); setTitleButtonSelect(1);}
        在Fragment中:

private IFragmentDataListener mFragmentDataListener;  @Overridepublic void onAttach(Activity activity) {// TODO Auto-generated method stubtry {mFragmentDataListener = (IFragmentDataListener) activity;} catch (Exception e) {// TODO: handle exceptionthrow new ClassCastException(activity.toString()+ "must implement mbtnListener");} super.onAttach(activity);}        @Override        public void transferMessage() {//在这里这个不用管            // TODO Auto-generated method stub            System.out.println("由Activity传输过来的信息");          }<span style="font-size:18px;"></span><pre name="code" class="java">       mFragmentDataListener.transferMessage();//在需要调用的地方,调用这个方法



0 0