Gomobile android 使用回调

我有一个使用 go mobile 编写的库,它应该只有一个回调,但是在尝试实现它时,我得到了两个额外的方法。


@Override

public Seq.Ref ref() {

    return null;

}


@Override

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

问题是,从 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

如果有人可以提供帮助,我将不胜感激。


明月笑刀无情
浏览 259回答 2
2回答

慕姐8265434

您绑定的 Go 源是什么?(封装移动和回调接口)传递实现Go接口类型的Java类,参见https://godoc.org/golang.org/x/mobile/cmd/gobind的“将目标语言对象传递给Go”部分基本上,生成的 Java 接口类型并不打算直接使用。相反,Java 类应该扩展生成的 Java 接口的 Stub 类。

月关宝盒

使用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) {        ....        }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go