Чтобы избежать связывания кода проекта плотно, попробуйте использовать шаблоны проектирования, которые были доказаны, чтобы работать лучше, как 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));
В своем последнем фрагменте, просто это для завершения:
Внутри 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);
}
Это то, что я всегда делал и чище, без использования интерфейсов, которые ваши фрагменты должны реализовать и сделать все это!
Надеюсь, вы сочтете это полезным для вас и удачи!
Вы уверены, что это лучший способ? Сохранение таких ссылок не очень хорошо, потому что у ваших классов будет плотная связь. – Eenvincible
Я уверен, что это легко и просто ... –
Примите мой ответ, чтобы помочь другим. –