我在 viewpager、Fragment1、Fragment2和Fragment3中有你的片段。
fragment1有一个按钮,当点击它时 setEnable(true) fragment2 中的按钮和 fragment2 中的按钮 setEnable(true) fragment3 中的 button3
一切似乎都工作正常,但是当我从片段 3 传递到片段 1 时浏览片段时,片段 3 会丢失信息,并且按钮会像开始一样回到初始状态 -setEnable(false),但片段 1 和片段 2 仍然当我浏览 viewpager 中的所有片段时,工作正常并且不会丢失信息。
导航时如何将信息保留在fragment3中?
这是我的代码:
片段1
public class FragmentUno extends Fragment {
Button btnClick;
private EventBus bus = EventBus.getDefault();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_uno, container, false);
btnClick = (Button)rootView.findViewById(R.id.button1);
btnClick.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
bus.post(new EventoBotton());
System.out.println("saliendoooo");
}
});
return rootView;
}
}
片段2
public class FragmentDos extends Fragment {
private EventBus bus = EventBus.getDefault();
private EventBus bus2 = EventBus.getDefault();
Button btnNext;
@Override
public void onResume() {
super.onResume();
bus.register(this);
}
@Override
public void onPause() {
super.onPause();
bus.unregister(this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_dos, container, false);
btnNext = (Button)rootView.findViewById(R.id.btnF2);
btnNext.setEnabled(false);
btnNext.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//HERE I POST EVENT TO SEND TO FRAG 3
bus2.post(new EventoDos());
}
});
return rootView;
}
@Subscribe
public void reenvio(EventoBotton ev) {
btnNext.setEnabled(true);//HERE RECEIVE EVENT FORM FRAG 1
}
}
片段3
public class FragmentTres extends Fragment {
TextView txtDos;
Button btnDis;
private EventBus bus2 = EventBus.getDefault();
@Override
public void onResume() {
super.onResume();
bus2.register(this);
}
@Override
public void onPause() {
super.onPause();
bus2.unregister(this);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_tres, container, false);
txtDos = (TextView)rootView.findViewById(R.id.txtCambio);
btnDis = (Button)rootView.findViewById(R.id.buttonF2);
btnDis.setEnabled(false);
return rootView;
}
@Subscribe
public void actualizar(EventoDos eventoDos) {
System.out.println("estamos aquiiii"); // Here I receive the event from frag 2
txtDos.setText("hola mundo");
btnDis.setEnabled(true);
}
}
这些是我的POJO事件
public class EventoBotton {
public EventoBotton() {}
}
另一个事件
public class EventoDos {
public EventoDos() {}
}
我在我的 SDK 21 中使用 eventbus 3.0。
一切正常,但是当我滑过视图寻呼机时,如果我从 3 滑到 2,信息仍然存在于 frag3 中。但是当我从 3 滑到 2 并回到 3 时达到 1 时,信息就丢失了。也就是说,frag 3中的按钮恢复到原来的状态(启用false)为什么??如何在 viewpager 中保留所有导航中的更改?