【问题标题】:Get a result from a react native app integrated into an existing android app从集成到现有 android 应用程序中的 react 本机应用程序中获取结果
【发布时间】:2017-10-20 11:31:12
【问题描述】:

我发现很多文章都在谈论如何将 React Native 集成到现有的 Android 应用程序中。但是他们都没有解释如何从反应原生代码中获取结果,以便直接在 Java android 源代码中使用它。

说明:我有一个 React Native 应用程序正在执行特定的工作,并在弹出窗口中显示结果。 我想集成这个应用程序(进行必要的修改),以便能够将此特定结果放入我的 android Java 源代码中,而不是将其显示到 react 本机弹出窗口中。

我搜索了整个互联网,但一无所获。

【问题讨论】:

  • 我不擅长原生代码,但你不能用所需的数据作为参数运行一个新的原生方法吗?
  • 我认为你应该参考 android intent 来达到你的目标,在你的 java 中使用意图来拉动你的反应,然后意图返回结果 facebook.github.io/react-native/releases/0.21/docs/…

标签: javascript java android react-native


【解决方案1】:

也许我不明白你想要做什么......但你不能只构建一个原生模块,并让你的 React Native 应用程序在完成后调用该函数以将数据传递给你的原生代码吗?

假设您的应用有一个 React Native 部分,它以用户的名字和姓氏作为输入,然后他们点击提交。

您可以像往常一样编写您的 RN javascript:有 2 个 TextInput 字段,其值映射到您的状态,以及一个带有 onPress 处理程序的 Button。在 onPress 处理程序中,您将调用您的 Native Module 并传递参数

import { 
    NativeModules
} from 'react-native';

const NativeNameSubmission = NativeModules.NameSubmission;

...

    <Button
        onPress={() => NativeNameSubmission.submitName(this.state.firstName, this.state.lastName)}
        title="Submit"/>

您的本机模块看起来像这样:

public class RCTNameSubmission extends ReactContextBaseJavaModule {

    public RCTNameSubmission(ReactApplicationContext reactContext) {
        super(reactContext);
    }

    @Override
    public String getName() {
        return "NameSubmission";
    }

    @ReactMethod
    public void submitName(String firstName, String lastName) {
        // save the name data for later use
        ...
        // Exit React App
        getCurrentActivity().finish();
    }
}

【讨论】:

  • 我认为这是一个很好的部分,但我想在您调用 NativeNameSubmission.submitName() 时关闭 React Native 应用程序并直接在负责 React Native 应用程序活动实例化的活动。
  • 以一个意图启动 RN Activity,并让启动它的 Activity 监听 onActivityResult。我添加了代码以从模块中关闭 RN 应用程序 (getCurrentActivity().finish();)。在模块中,可以将数据保存起来供原activity以后使用,也可以在onActivityResult中传回
猜你喜欢
  • 2016-01-01
  • 2017-05-04
  • 2017-05-02
  • 1970-01-01
  • 2021-11-22
  • 2018-08-29
  • 1970-01-01
  • 2013-12-31
  • 2016-09-28
相关资源
最近更新 更多