Gomobile Android с помощью обратных вызовов

У меня есть библиотека, написанная с использованием Go Mobile, и она должна иметь только один обратный вызов, но при попытке реализовать ее, я получаю два дополнительных метода.

@Override
public Seq.Ref ref() {
    return null;
}

@Override
public void call(int i, Seq seq, Seq seq1) {}

Вопрос в том, как правильно реализовать обратный вызов из go на Android Activity?

Прямо сейчас у меня есть следующее:

public class MainActivity extends Activity implements implements Mobile.Callback {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_register);
          Mobile.Client client = Mobile.New("192.168.2.1", 9000, this);
          try {
             client.Connect();
          } catch (Exception e) {
             e.printStackTrace();
          }
    }

    @Override
    public void OnMessage(String s) {
       Log.e("GO", s);
    }

    @Override
    public Seq.Ref ref() {
       return null;
    }

    @Override
    public void call(int i, Seq seq, Seq seq1) {

    }
}

Соединение установлено успешно, но при ответе на активность я получаю:

panic: runtime error: invalid memory address or nil pointer dereference

Если кто-то может помочь, я буду очень признателен.

2 ответа

Какой источник Go вы связываете? (Пакет мобильных и интерфейс обратного вызова)

Для передачи Java-класса, реализующего тип интерфейса Go, см. Раздел "Передача объектов целевого языка в Go" на https://godoc.org/golang.org/x/mobile/cmd/gobind

По сути, сгенерированный тип интерфейса Java не предназначен для непосредственного использования. Вместо этого класс Java должен расширять класс Stub сгенерированного интерфейса Java.

Использование Mobile.Callback.Stub вместо Mobile.Callback для андроида

...
Mobile.Client client = Mobile.New("192.168.2.1", 9000,  new Callbacks());

...
class Callbacks extends Mobile.Callback.Stub {
        @Override
        public void OnMessage(String s) {
        ....
        }
}
Другие вопросы по тегам