J'ai des fragments sous forme d'onglets et j'ai créé une classe d'interface pour analyser une chaîne d'un fragment à un autre fragment dans la même activité de fragment. mais le problème est que j'ai une force proche dans mon téléphone et onglet quand commencer à changer d'onglet. Est-ce la meilleure façon de communiquer entre les fragments et une aide pour comprendre le problème. Merci ....Fragments analyse des données dans FragmentActivity TabListener
Voici la classe d'interface
public interface FragmentCommunicater {
public void getData(String data);
}
FragmentActivity Classe
public class Welcome extends FragmentActivity implements TabListener,FragmentCommunicater{
private ActionBar actionbar;
private ViewPager viewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_welcome);
viewPager = (ViewPager) findViewById(R.id.viewPager);
viewPager.setAdapter(new fragAdapter(getSupportFragmentManager()));
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener(){
@Override
public void onPageSelected(int arg0) {
actionbar.setSelectedNavigationItem(arg0);
}
});
actionbar = getActionBar();
actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab dashboard_tab = actionbar.newTab();
dashboard_tab.setText("Home");
dashboard_tab.setTabListener(this);
actionbar.addTab(dashboard_tab);
ActionBar.Tab addPatient_tab = actionbar.newTab();
addPatient_tab.setText("Add Patient");
addPatient_tab.setTabListener(this);
actionbar.addTab(addPatient_tab);
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void getData(String data) {
FragmentManager fm = getSupportFragmentManager();
ViewPatient vpFrag = (ViewPatient) fm.findFragmentById(R.id.view_patient_fragment);
vpFrag.setData(data);
}
}
class fragAdapter extends FragmentPagerAdapter{
public fragAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int arg0) {
Fragment fragment = null;
if(arg0 == 0){
fragment = new Dashboard();
}
if(arg0 == 1){
fragment = new AddPatient();
}
return fragment;
}
@Override
public int getCount() {
return 5;
}
}
Envoi Fragment
public class Dashboard extends Fragment {
private Button btn_searchPatient;
private FragmentCommunicater fragComm;
public Dashboard() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_dashboard, container, false); btn_searchPatient = (Button) view.findViewById(R.id.btn_searchPatient);
fragComm = (FragmentCommunicater) getActivity();
initializeActions();
return view;
}
private void initializeActions(){
btn_searchPatient.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(!result.isEmpty()){
fragComm.getData("test parse string"));
}
}
});
}
}
RECEVOIR Fragment
public class ViewPatientextends Fragment {
public ViewPatient() {
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_view_patient, container, false);
return view;
}
public void setData(String data){
Toast.makeText(getActivity().getApplicationContext(), data, Toast.LENGTH_LONG).show();
}
}