У меня есть Actvivity с ListView, я установил адаптерОбратный звонок из (Список) Адаптер к деятельности
MyAdapter extends BaseAdapter
, что адаптер имеет интерфейс обратного вызова
OnPdfClickedListener callback;
public interface OnPdfClickedListener {
public void onPdfClicked();
}
и в деятельности
MyActvivity implements MyAdapter.OnPdfClickedListener
и
@Override
public void onPdfClicked() {
Log.d("TEST", "PDF CLICKED in ACTVIIVTY");
}
Это почти то же самое, что описано here, которое работает как шарм для фрагментов. При попытке использования адаптера объект обратного вызова имеет значение null.
Я также попытался инстанцировании как
OnPdfClickedListener callback = new OnPdfClickedListener() {
@Override
public void onPdfClicked() {
// TODO Auto-generated method stub
}
};
У меня нет никаких ошибок тогда, но соответствующий метод в деятельности никогда не вызывается.
Мой вопрос 1. почему не обратный вызов объекта нуль при использовании фрагмента, он никогда не инстанцирован
и 2. Как я могу перезвонить на операцию от адаптера?
Это работает, спасибо кучу! Я до сих пор не понимаю, почему, но я обвожу свою голову :) – FWeigl
@Ascorbin Чтобы отправить событие (pdf нажал), вы вызовете метод onPdfClicked() 'на объект типа' OnPdfClickedListener', который будет быть слушателем/наблюдателем для события с щелчком pdf (этот объект зарегистрировался как наблюдатель). Чтобы отправить событие в вашу 'Activity', вам нужно вызвать метод onPdfClicked на объекте' Activity' (который является 'OnPdfClickedListener'), и поэтому вам нужно передать ссылку на действие.В образце фрагмента они используют переменную обратного вызова для защиты от «NullPointerException», поскольку фрагменты имеют более сложный срок службы. – Luksprog
Отличное объяснение, большое спасибо. – FWeigl