Je prévois d'avoir 3 listes de fragments dans une seule activité. L'objectif est de sélectionner l'option "parler" dans la première liste, puis de passer à la liste "exécuter" en fonction de ce que vous avez cliqué dans la liste "parler", et enfin, dans la liste "exécuter", en fonction de ce que vous avez cliqué, de passer à la liste "manger" finale. Est-ce que cela doit se faire dans les fragments eux-mêmes (comme je l'ai fait) ou en appelant l'activité pour gérer le transfert de données vers les fragments ?
public class OptionsActivity extends Activity {
protected TalkFragment talk;
protected RunFragment run;
protected EatFragment eat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
talk = new TalkFragment();
run = new RunFragment();
eat = new EatFragment();
}
}
public class TalkFragment extends ListFragment {
private Cursor mCursor;
int mCurCheckPosition = 0;
@Override
public void onActivityCreated(Bundle savedState) {
super.onActivityCreated(savedState);
}
@Override
public void onListItemClick(ListView l, View v, int pos, long id) {
mCurCheckPosition = pos;
// We can display everything in-place with fragments.
// Have the list highlight this item and show the data.
getListView().setItemChecked(pos, true);
// Check what fragment is shown, replace if needed.
RunFragment run_frag = (RunFragment) getFragmentManager().findFragmentById(R.id.fragment_run);
if (run_frag == null || run_frag.getShownIndex() != pos) {
run_frag = RunFragment.newInstance(pos);
FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.replace(R.id.details, details);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
ft.commit();
}
}
}
Ce ne sont évidemment que des bribes, mais vous voyez l'idée. Si je procède de cette manière, je ne sais pas vraiment comment transmettre correctement certains paramètres au fragment. Idéalement, le RunFragment devrait savoir quoi afficher en fonction de l'ID de l'élément cliqué dans le TalkFragment. Ces paramètres devraient-ils plutôt passer par l'activité ?