Nehmen wir also an, Sie haben Activity AB, das Frag A und Fragment B steuert. Innerhalb von Fragment A benötigen Sie eine Schnittstelle, die Activity AB implementieren kann. Im Beispiel-Android-Code haben sie:
private Callbacks mCallbacks = sDummyCallbacks;
/ * Eine Rückrufschnittstelle, die alle Aktivitäten, die dieses Fragment enthalten, implementieren müssen. Mit diesem Mechanismus können Aktivitäten über die Artikelauswahl benachrichtigt werden. * /
public interface Callbacks {
public void onItemSelected(String id);
}
private static Callbacks sDummyCallbacks = new Callbacks() {
@Override
public void onItemSelected(String id) {
}
};
Die Callback-Oberfläche befindet sich in einem Ihrer Fragmente (sagen wir Fragment A). Ich denke, der Zweck dieser Callbacks-Schnittstelle ist wie eine verschachtelte Klasse in Frag A, die jede Aktivität implementieren kann. Wenn also Fragment A ein Fernsehgerät war, ist CallBacks die TV-Fernbedienung (Schnittstelle), mit der Fragment A von Aktivität AB verwendet werden kann. Ich kann mich in Bezug auf Details irren, weil ich ein Neuling bin, aber ich habe mein Programm dazu gebracht, auf allen Bildschirmgrößen perfekt zu funktionieren, und das habe ich verwendet.
In Fragment A haben wir also: (Ich habe dies aus den Beispielprogrammen von Android genommen)
@Override
public void onListItemClick(ListView listView, View view, int position, long id) {
super.onListItemClick(listView, view, position, id);
mCallbacks.onItemSelected(DummyContent.ITEMS.get(position).id);
}
In Activity AB überschreiben wir die onItemSelected-Methode:
public class AB extends FragmentActivity implements ItemListFragment.Callbacks {
@Override
public void onItemSelected(String id) {
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();
}
In Activity AB werfen Sie also im Grunde alles in ein Bundle und übergeben es an B. Wenn Sie sich nicht sicher sind, wie Sie ein Bundle verwenden sollen, schlagen Sie die Klasse nach.
Ich gehe im Grunde genommen nach dem Beispielcode, den Android bereitgestellt hat. Der mit dem DummyContent-Zeug. Wenn Sie ein neues Android-Anwendungspaket erstellen, trägt es den Titel MasterDetailFlow.