0

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 

を:事前

答えて

0

でのおかげであなたは使用して試すことができます。

+0

あなたはMyActivityでviewPagerを含んでいますか?このような? mViewPager.setOffscreenPageLimit(2)...? – matQ

+0

優秀な男!私はこの状況をコントロールするためにEvenBusを作るためにすべてのGoogleを読んだが、何も見つけられなかった。おかげで、他の人に役立つことを願っていますどうもありがとうございました – matQ

関連する問題