Hi,
As I noted on the issue, you should avoid the reverse binding for now and use
Go interfaces instead. The following change to the gomobile bind example
demonstrates the technique:
diff --git
a/example/bind/android/app/src/main/java/org/golang/example/bind/MainActivity.java
b/example/bind/android/app/src/main/java/org/golang/example/bind/MainActivity.java
index 47248d9..fce9a7b 100644
---
a/example/bind/android/app/src/main/java/org/golang/example/bind/MainActivity.java
+++
b/example/bind/android/app/src/main/java/org/golang/example/bind/MainActivity.java
@@ -11,6 +11,8 @@ import android.os.Bundle;
import android.widget.TextView;
import hello.Hello;
+import hello.ContentProvider;
+import hello.Writer;
public class MainActivity extends Activity {
@@ -25,5 +27,16 @@ public class MainActivity extends Activity {
// Call Go function.
String greetings = Hello.greetings("Android and Gopher");
mTextView.setText(greetings);
+
+ Hello.initContentProvider(new ContentProvider() {
+ @Override public Writer open(String name) throws
Exception {
+ return new Writer() {
+ @Override public long write(byte[]
data) throws Exception {
+ return 0;
+ }
+ };
+ }
+ });
+ Hello.useContentProvider();
}
}
diff --git a/example/bind/android/hello/build.gradle
b/example/bind/android/hello/build.gradle
index 92fb0bd..11345e4 100644
--- a/example/bind/android/hello/build.gradle
+++ b/example/bind/android/hello/build.gradle
@@ -4,7 +4,7 @@
*/
plugins {
- id "org.golang.mobile.bind" version "0.2.9"
+ id "org.golang.mobile.bind" version "0.2.7"
}
gobind {
diff --git a/example/bind/hello/hello.go b/example/bind/hello/hello.go
index 2d98ff9..96301da 100644
--- a/example/bind/hello/hello.go
+++ b/example/bind/hello/hello.go
@@ -10,3 +10,28 @@ import "fmt"
func Greetings(name string) string {
return fmt.Sprintf("Hello, %s!", name)
}
+
+var contentProvider ContentProvider
+
+type ContentProvider interface {
+ Open(name string) (Writer, error)
+}
+
+type Writer interface {
+ Write(b []byte) (int, error)
+}
+
+func InitContentProvider(cp ContentProvider) {
+ contentProvider = cp
+}
+
+func UseContentProvider() {
+ w, err := contentProvider.Open("test")
+ if err != nil {
+ // handle error
+ }
+ _, err = w.Write([]byte("data"))
+ if err != nil {
+ // handle error
+ }
+}
The gobind plugin downgrade is https://github.com/golang/go/issues/21594.
- elias
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.