Не вызван метод обратного вызова интерфейса

#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