[复习] android 原生模块(带参数)

2021-03-17  本文已影响0人  吴敬悦

这篇接着上一篇: [复习] android 原生模块(不带任何参数)
我发现中文官网教程不如英文官网,虽然我看不懂英语,但是使用谷歌翻译再加上自己的理解,还是不成问题的。

Android Native Modules

最主要看下面这个图:


JavaScript类型所对应的Java类型

先看基础类型:

    @ReactMethod
    fun testBaseType(str: String, num: Double) {
        Log.e(TAG, "$str,$num")
    }

这里我使用 StringDouble ,接下来看看 javascript 怎么调用:

NativeModules?.TestModule?.testBaseType('吴敬', 27);

现在再看引用类型怎么弄。

    @ReactMethod
    fun testQuote(obj: ReadableMap, arr: ReadableArray) {
        Log.e(TAG, "${obj.getString("name")}, ${obj.getDouble("age")}")
        arr.toArrayList().forEach { Log.e(TAG, "${it},") }
    }

对于 getString 就是获取字符串; getDouble 是获取 javascript 中的 number 。 在 javascript 中的调用:

NativeModules?.TestModule?.testQuote?.({name: '吴敬悦', age: 27}, [
    1,
    2,
    3,
    4,
    5,
    6,
  ]);

现在再来看回调:

    @ReactMethod
    fun testCallback(cal: Callback) {
        cal.invoke("吴敬")
    }

注意 Callbackcom.facebook.react.bridge. 包下面;下面看 js 的调用:

NativeModules?.TestModule?.testCallback?.(name => {
    console.log(name, '------');
});
上一篇下一篇

猜你喜欢

热点阅读