Powinieneś zrobić coś takiego. Najpierw utworzyć interfejs, który będzie używany do komunikacji z aktywności na przykład:
public interface OnViewSelected {
public void onViewSelected(int viewId);
}
iw swoim onAttach
to zrobić:
OnViewSelected _mClickListener;
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
_mClickListener = (OnViewSelected) activity;
} catch (ClassCastException e) {
throw new ClassCastException(activity.toString() + " must implement onViewSelected");
}
}
W swojej Fragment wdrożyć OnClickListener
i metodę onClick()
to zrobić:
@Override
public void onClick(View v) {
_mClickListener.onViewSelected(456);
}
Po tym w swojej Działalności musisz zaimplementować interfejs utworzony w Twoim Fragmentie i będzie on poproś o dodanie niezaimplementowanych metod, a w swojej działalności będziesz miał taką funkcję:
@Override
public void onViewSelected(int data) {
Log.d("","data : "+data); // this value will be 456.
}
To wszystko. :)
fajne :) Android Framework generuje się tak, jak mówisz. I teraz mogę to wyraźnie zrozumieć – hqt
dlaczego stworzyć interfejs? Nie możesz po prostu utworzyć kontekstowego pliku ctx (globalnego) i przesłać go do działania przekazanego wewnątrz działania OnAttach by ctx = (YourActivity), a następnie użyć pliku ctx.onViewSelected (dane), podanego w polu Kurs utworzony przez użytkownika onViewSelected w swojej działalności. – tony9099
Ponieważ moim zdaniem jest to najlepszy sposób do tej pory, nie ma znaczenia, czy używam tego w jednym 'Fragmentie' lub wielu. Twoja implementacja też będzie działać, ale lubię interfejsy więcej :) – hardartcore