为避免紧密耦合您的项目代码,请尝试使用已被证明最有效的设计模式,例如 Publisher/Subscriber,我将在下面向您展示:
我在我的项目中一直使用一个流行的库,名为 EventBus - 只需将以下内容添加到依赖项下的 build.gradle(模块级)文件中即可:
compile 'org.greenrobot:eventbus:3.0.0'
其次,创建一个简单的Plain Old Java Object (POJO) 来代表您的活动:
public class FragmentAToLastEvent{
private String txtConsAcNo;
private String txtMeterSrMo;
FragmentAToLastEvent(String acNo, String srMO){
this.txtConsAcNo = acNO;
this.txtMeterSrMo = srMO;
}
//getters and setters if needed
public String gettxtConsAcNo(){
return txtConsAcNo;
}
public String gettxtMeterSrMo(){
return txtMeterSrMo;
}
}
下一步是在此处实际使用您的 Event 类:
因此,在您想要从EditText 发送文本的片段中,只需执行以下操作:
String txtConsAcNo = f1.txtConsAcNo.getText().toString();
String txtMeterSrMo = f1.txtMeterSrMo.getText().toString();
EventBus.getDefault().post(new FragmentAToLastEvent(txtConsAcNo, txtMeterSrMo));
在您的最后一个片段中,只需执行以下操作即可完成:
在您的 Fragment 的 onCreate 或 onAttach 内:
//register your event - making this class a subscriber
EventBus.getDefault().register(this)
//next, override a single method to receive the values you passed from above code (Fragment 1?)
public void onEvent(FragmentAToLastEvent event){
String txtConsAcNo = event.gettxtConsAcNo();
String txtMeterSrMo = event.gettxtMeterSrMo();
//now you can use your text here without problems!
}
最后,记得在 onDestroy 中取消注册:
@Override
public void onDestroy(){
super.onDestroy();
EventBus.getDefault().unregister(this);
}
这是我一直在做的事情,而且它更简洁,无需使用您的片段必须实现并完成所有这些操作的接口!
希望对你有帮助,祝你好运!