Disons que vous avez l'activité AB qui contrôle le fragment A et le fragment B. À l'intérieur du fragment A, vous avez besoin d'une interface que l'activité AB peut mettre en œuvre. Dans l'exemple de code Android, ils ont :
private Callbacks mCallbacks = sDummyCallbacks;
/*Une interface de rappel que toutes les activités contenant ce fragment doivent mettre en œuvre. Ce mécanisme permet aux activités d'être notifiées des sélections d'éléments. */
public interface Callbacks {
/*Callback for when an item has been selected. */
public void onItemSelected(String id);
}
/*A dummy implementation of the {@link Callbacks} interface that does nothing. Used only when this fragment is not attached to an activity. */
private static Callbacks sDummyCallbacks = new Callbacks() {
@Override
public void onItemSelected(String id) {
}
};
L'interface Callback est placée dans l'un de vos fragments (disons le fragment A). Je pense que le but de cette interface CallBacks est comme une classe imbriquée à l'intérieur du Fragment A que n'importe quelle activité peut implémenter. Ainsi, si le fragment A est un téléviseur, l'interface CallBacks est la télécommande du téléviseur (interface) qui permet au fragment A d'être utilisé par l'activité AB. Je peux me tromper sur les détails parce que je suis un noob mais j'ai réussi à faire fonctionner mon programme parfaitement sur toutes les tailles d'écran et c'est ce que j'ai utilisé.
Donc à l'intérieur du Fragment A, nous avons : (J'ai pris ça dans les programmes d'exemple d'Android)
@Override
public void onListItemClick(ListView listView, View view, int position, long id) {
super.onListItemClick(listView, view, position, id);
// Notify the active callbacks interface (the activity, if the
// fragment is attached to one) that an item has been selected.
mCallbacks.onItemSelected(DummyContent.ITEMS.get(position).id);
//mCallbacks.onItemSelected( PUT YOUR SHIT HERE. int, String, etc.);
//mCallbacks.onItemSelected (Object);
}
Et dans l'activité AB, nous surchargeons la méthode onItemSelected :
public class AB extends FragmentActivity implements ItemListFragment.Callbacks {
//...
@Override
//public void onItemSelected (CATCH YOUR SHIT HERE) {
//public void onItemSelected (Object obj) {
public void onItemSelected(String id) {
//Pass Data to Fragment B. For example:
Bundle arguments = new Bundle();
arguments.putString(“FragmentB_package”, id);
FragmentB fragment = new FragmentB();
fragment.setArguments(arguments);
getSupportFragmentManager().beginTransaction().replace(R.id.item_detail_container, fragment).commit();
}
Ainsi, à l'intérieur de l'activité AB, vous placez tout dans un Bundle et le transmettez à B. Si vous n'êtes pas sûr de savoir comment utiliser un Bundle, consultez la classe.
Je me base sur l'exemple de code fourni par Android. Celui avec le truc DummyContent. Lorsque vous créez un nouveau package d'application Android, c'est celui intitulé MasterDetailFlow.
0 votes
stackoverflow.com/questions/7149802/ ceci peut aider
0 votes
duplicata possible de Android : Passer des données (extras) à un fragment