0

我有3個片段在viewpager片段1,Fragment2,Fragment3EventBus在viewPager片段問題?

片段1上有一個按鈕,並且當的onclick它setEnable(真)在fragment2一個按鈕,並在片段2 setEnable按鈕(真)在fragment3

一個BUTTON3

似乎都可以正常工作,但是當從片段3傳遞到片段1時,ai導航片段時,片段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 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(){} 

}

IM 21

所有的工作正常,但是當我通過視圖尋呼機滑動,如果我從3滑到2的信息仍然存在於frag3,但是當我從3滑動到2並達到1時,我回到3信息失去了說frag 3中的按鈕恢復到原始狀態(啓用false)爲什麼?我如何堅持在viewpager中的所有導航中的變化?在ViewPager對象,設置了應保留在視圖層次結構的當前頁面的兩側處於空閒狀態的頁數上

setOffscreenPageLimit(int limit) // in you case limit = 2 

:在此先感謝

回答

0

您可以嘗試使用。

+0

你的意思是在MyActivity中包含viewPager?喜歡這個? mViewPager.setOffscreenPageLimit(2)...? – matQ

+0

外觀極好的人!我讀了所有的谷歌,使EvenBus來控制這種情況,但沒有發現任何東西。感謝人希望它可以幫助別人!非常感謝你 – matQ