Допустим, у вас есть Activity AB, которая контролирует Frag A и Fragment B.
Внутри фрагмента A вам нужен интерфейс, который может реализовать Activity AB.
В примере кода Android они имеют:
private Callbacks mCallbacks = sDummyCallbacks;
/ * Интерфейс обратного вызова, который должны реализовывать все действия, содержащие этот фрагмент. Этот механизм позволяет уведомлять действия о выборе элемента.
* /
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) {
}
};
Интерфейс обратного вызова помещен в один из ваших фрагментов (скажем, фрагмент А). Я думаю, что цель этого интерфейса Callbacks подобна вложенному классу внутри Frag A, который может реализовать любая активность. Поэтому, если Фрагмент A был телевизором, CallBacks - это пульт дистанционного управления (интерфейс) телевизора, который позволяет использовать Фрагмент A в Activity AB. Я могу ошибаться в деталях, потому что я новичок, но я действительно заставил свою программу работать на всех размерах экрана, и это то, что я использовал.
Итак, внутри фрагмента А мы имеем:
(Я взял это из примеров программ 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);
}
А внутри Activity AB мы переопределяем метод 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();
}
Итак, внутри Activity AB вы в основном бросаете все в Bundle и передаете его B. Если вы не уверены, как использовать Bundle, посмотрите класс.
Я в основном использую пример кода, предоставленного Android. Тот, что с материалом DummyContent. Когда вы создаете новый пакет приложений для Android, он называется MasterDetailFlow.