#java #android #interface #callback
#java #Android #интерфейс #обратный вызов
Вопрос:
Я пытаюсь работать с интерфейсом обратного вызова в следующем сценарии.
public class FragSuper extends Fragment implements Listener
{
public static hello()
{
Listener l = new FragSuper();
l.banana();
}
@Override
public void banana()
{
Log.e("Banana", "in FragSuper");
}
}
public class Test extends Activity implements Listener
{
/* ....... code here .......*/
@Override
public void banana()
{
Log.e("Banana", "in Test");
}
}
Проблема в том, что banana () получает обратный вызов в классе FragSuper, однако banana () в тестовом классе не вызывается. Почему это?
Что я делаю не так?
Обновить:
После предоставления контекста / экземпляра теста слушателю (интерфейсу), вот так:
Listener l = new Test();
l.banana();
Я получаю эту ошибку:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
С уважением
Ответ №1:
Хорошо, поехали
Listener l = (Test) (getActivity());
l.banana();
Комментарии:
1. Это не работает. Я получаю исключение nullPoinnterException, потому что Test является MainActivity и он начинает получать обратные вызовы до того, как тест полностью инициализирован ОС
2. Откуда вы вызываете
3. Я вызываю его из класса FragSuper
4. Прослушиватель l = новый FragSuper(); изменение на тестовый экземпляр, переданный Frgsuper при транзакции фрагмента
5. тогда я не получаю обратные вызовы в TEST