为了账号安全,请及时绑定邮箱和手机立即绑定

Gomobile android 使用回调

Gomobile android 使用回调

Go
明月笑刀无情 2021-12-20 11:01:20
我有一个使用 go mobile 编写的库,它应该只有一个回调,但是在尝试实现它时,我得到了两个额外的方法。@Overridepublic Seq.Ref ref() {    return null;}@Overridepublic 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如果有人可以提供帮助,我将不胜感激。
查看完整描述

2 回答

?
慕姐8265434

TA贡献1813条经验 获得超2个赞

您绑定的 Go 源是什么?(封装移动和回调接口)

传递实现Go接口类型的Java类,参见https://godoc.org/golang.org/x/mobile/cmd/gobind的“将目标语言对象传递给Go”部分

基本上,生成的 Java 接口类型并不打算直接使用。相反,Java 类应该扩展生成的 Java 接口的 Stub 类。


查看完整回答
反对 回复 2021-12-20
?
月关宝盒

TA贡献1772条经验 获得超5个赞

使用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) {

        ....

        }

}


查看完整回答
反对 回复 2021-12-20
  • 2 回答
  • 0 关注
  • 258 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信