我有一个用go mobile编写的库,它应该只有一个回调,但当我尝试实现它时,我得到了两个额外的方法。
@Override
public Seq.Ref ref() {
return null;
}
@Override
public void call(int i, Seq seq, Seq seq1) {}问题是,在Android Activity上实现go回调的正确方式是什么?
现在我有下一步:
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) {
}
}连接已成功建立,但在回调到activity I时得到:
panic: runtime error: invalid memory address or nil pointer dereference如果有人能帮忙,我将不胜感激。
发布于 2016-03-03 22:07:12
你绑定的Go源码是什么?(套餐移动端和回调接口)
有关传递实现Go接口类型的Java类的信息,请参阅https://godoc.org/golang.org/x/mobile/cmd/gobind的“将目标语言对象传递给Go”一节
基本上,生成的Java接口类型不能直接使用。相反,Java类应该扩展生成的Java接口的Stub类。
发布于 2016-04-11 14:38:21
在安卓系统上使用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) {
....
}
}https://stackoverflow.com/questions/35767181
复制相似问题