android - 使用自定义对象在 React native 和 android 之间进行 React native 通信

标签 android reactjs react-native

我有一个像这样与 Android 通信的 React Native 组件 -

我的 React Native 代码-

const myModule = NativeModules.MyProcessor;

myModule.processData(obj1, obj2);

我在 MyProcessor.java 中的 Android 代码是 -

@ReactMethod
    public void processData(final Object1 obj1, final Objet2 obj2) {
        //Do something here
    }

我的对象数据看起来像 -

"data1": {
                "id": "1",
                "name": "john",
                "key": "xxxxxxxx"
            },
            "details": {
                "detailId": "2",
                "detailName": "peter",
                "counter": 1
            }

我得到了 2 个对象 data1 和 details,我需要这两个对象以及 detailId。

我的问题是如何在我的 java 中使用这两个对象?

最佳答案

问题:

How do I use these 2 objects Object1 and Object2 in my java?

答案: 引自 here :

"The following argument types are supported for methods annotated with @ReactMethod and they directly map to their JavaScript equivalents"

Boolean -> Bool
Integer -> Number
Double -> Number
Float -> Number
String -> String
Callback -> function
ReadableMap -> Object
ReadableArray -> Array

React Native 正在将 javascript 对象转换为 ReadableMap

因此,与其期待原生模块中的 Object,不如像这样实现方法:

@ReactMethod
public void processData(final ReadableMap obj1, final ReadableMap obj2) {
    // Parse the ReadableMap using the available interface methods
}

这些是 ReadableMap 接口(interface)中可用的方法:Source

public interface ReadableMap {

  boolean hasKey(String name);
  boolean isNull(String name);
  boolean getBoolean(String name);
  double getDouble(String name);
  int getInt(String name);
  String getString(String name);
  ReadableArray getArray(String name);
  ReadableMap getMap(String name);
  Dynamic getDynamic(String name);
  ReadableType getType(String name);
  ReadableMapKeySetIterator keySetIterator();
  HashMap<String, Object> toHashMap();
}

更新

按照您发布的示例对象,您可以像这样解析您的数据:

ReadableMap data1 = obj1.getMap("data1");
String id = data1.getString("id");
String name = data1.getString("name");
// And so on...

ReadableMap details = obj1.getMap("details");
String detailId = details.getString("detailId");
int counter = details.getInt("counter");
// And so on...

关于android - 使用自定义对象在 React native 和 android 之间进行 React native 通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51842209/

相关文章:

javascript - React-Leaflet,从状态提供位置

javascript - 更改 Service Worker 的名称?

java - 如何从 React Native 组件中的 Java 模块返回数组?

react-native - ReactNative,使用 expo bare 工作流有什么好处?

android - cpp文件的armeabi-v7a编译错误

android - 在 Android 上从 Webview 保存 PDF

android - 获取Android文件资源的大小?

android - 红色感叹号 (!) 在 Eclipse 中的项目名称上标记

reactjs - 如何在 React 中引用组件的 props?

android - Gradle 设置 : Invalid variable name. 必须以字母开头,但是: