我有一个使用 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 类。
月关宝盒
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) {
....
}
}
- 2 回答
- 0 关注
- 258 浏览
添加回答
举报
0/150
提交
取消