Android实现Fragment跨Activity回调通信
个人喜欢复杂东西简单化,这里就不做理论性描述,实现这方法当然很多,比如可以使用广播,实现Activity回调再调用Fragment等,这里是直接Activity回调到Fragment
效果流程图
2.实现流程
2.1 单例回调委托代理类,MyInstance.java
packagecom.cyy.test;/***Createdbycyyon2016/6/20.*单例代理接口回调*/publicclassMyInstance{publicstaticMyInstanceinstance;publicCallBackercallBacker;//回调代理publicstaticMyInstancegetInstance(){if(instance==null){instance=newMyInstance();}returninstance;}/***接口设置*/public<T>voidsetCallBacker(CallBacker<T>callBacker){this.callBacker=callBacker;}/***回调接口*/publicinterfaceCallBacker<T>{voidonCallBack(Tvar);}}
2.2 Activity1中设置单例委托类代理的回调方法
packagecom.cyy.test;importandroid.app.Fragment;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.ViewGroup;importandroid.widget.Button;importandroid.widget.Toast;publicclassMyFragmentextendsFragmentimplementsView.OnClickListener{@OverridepublicViewonCreateView(LayoutInflaterinflater,ViewGroupcontainer,BundlesavedInstanceState){Viewview=inflater.inflate(R.layout.fragment_my,container,false);Buttonbutton=(Button)view.findViewById(R.id.button);button.setOnClickListener(this);returnview;}@OverridepublicvoidonClick(Viewv){switch(v.getId()){caseR.id.button://设置回调代理方法MyInstance.getInstance().setCallBacker(newMyInstance.CallBacker<String>(){@OverridepublicvoidonCallBack(Stringvar){Toast.makeText(mContext,"回调成功"+var,Toast.LENGTH_SHORT).show();}});//点击跳转到到Activity2startActivity(newIntent(getActivity(),Activity2.class));break;}}}
2.3 Activity1中Fragment接口方法定义,打开Actvity2界面并设置回调方法
packagecom.cyy.test;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.Button;publicclassActivity2extendsActivityimplementsView.OnClickListener{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity2);Buttonbutton=(Button)findViewById(R.id.button);button.setOnClickListener(this);}@OverridepublicvoidonClick(Viewv){switch(v.getId()){caseR.id.button://执行回调MyInstance.getInstance().callBacker.onCallBack("来自Activity2回调");finish();break;}}}
3.Demo代码这里不提供了,这三个类直接复制使用就可以
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。