我有一個使用 go mobile 編寫的庫,它應(yīng)該只有一個回調(diào),但是在嘗試實現(xiàn)它時,我得到了兩個額外的方法。@Overridepublic Seq.Ref ref() { return null;}@Overridepublic void call(int i, Seq seq, Seq seq1) {}問題是,從 Android Activity 上實現(xiàn)回調(diào)的正確方法是什么?現(xiàn)在我有下一個: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) { }}連接已成功建立,但在回調(diào)活動時我得到:panic: runtime error: invalid memory address or nil pointer dereference如果有人可以提供幫助,我將不勝感激。
2 回答

慕姐8265434
TA貢獻(xiàn)1813條經(jīng)驗 獲得超2個贊
您綁定的 Go 源是什么?(封裝移動和回調(diào)接口)
傳遞實現(xiàn)Go接口類型的Java類,參見https://godoc.org/golang.org/x/mobile/cmd/gobind的“將目標(biāo)語言對象傳遞給Go”部分
基本上,生成的 Java 接口類型并不打算直接使用。相反,Java 類應(yīng)該擴(kuò)展生成的 Java 接口的 Stub 類。

月關(guān)寶盒
TA貢獻(xiàn)1772條經(jīng)驗 獲得超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 關(guān)注
- 304 瀏覽
添加回答
舉報
0/150
提交
取消