iはviewpager Fragment1、Fragment2 3つのフラグメント、Fragment3viewPagerのフラグメントの問題のEventBus?
fragment1ボタンを有し、fragment2におけるボタン及び断片2 setEnable(真)fragment3
でボタン3でボタンのonclickがsetEnable(真)を有しますはすべて問題なく動作していますが、フラグメント3からフラグメント1に渡すときにフラグメントをナビゲートすると、フラグメント3は情報を失い、ボタンは元の状態に戻ります(-setEnable(false))。 viewpager内のすべてのフラグメントをナビゲートすると情報が失われることはありません。
どのようにナビゲート中に情報をfragment3に保存できますか?ここに私のコードがある
Fragment1
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 EventoBoton());
System.out.println("saliendoooo");
}
});
return rootView;
}
}
fragment2
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(EventoBoton ev){
btnNext.setEnabled(true);//HERE RECEIVE EVENT FORM FRAG 1
}
}
Fragment3
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 EVENT FROM FRAG 2
txtDos.setText("hola mundo");
btnDis.setEnabled(true);
}
}
これは私のPOJOイベントがある
public class EventoBoton {
public EventoBoton(){}
}
eventbus 3.0私のSDKを使用して、他のイベント
public class EventoDos {
public EventoDos(){}
}
イム21
すべてうまく動作しますが、私が3から2にスライドすると私はビューページャーをスリップしますが、情報はまだfrag3にありますが、3から2にスライドして3に戻ると、情報はそれを失うfrag 3のボタンが元の状態に戻ります(falseに設定されています)。どのように私はビューページ内のすべてのナビゲーションの変更を維持することができますか?アイドル状態でのビュー階層に現在のページのいずれかの側に保持すべきページ数を設定しますViewPagerオブジェクト上
setOffscreenPageLimit(int limit) // in you case limit = 2
を:事前
あなたはMyActivityでviewPagerを含んでいますか?このような? mViewPager.setOffscreenPageLimit(2)...? – matQ
優秀な男!私はこの状況をコントロールするためにEvenBusを作るためにすべてのGoogleを読んだが、何も見つけられなかった。おかげで、他の人に役立つことを願っていますどうもありがとうございました – matQ