ReactNative-JS 调用原生方法实例代码


Posted in Javascript onOctober 08, 2016

ReactNative-JS 调用原生方法实例代码

第一步首先创建ReactNative 模块类继承ReactContextBaseJavaModule

package com.mixture;

import android.content.Context;
import android.widget.Toast;

import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;

/**
 * Created by Administrator on 2016/9/22.
 */

public class MyNativeModule extends ReactContextBaseJavaModule {

  public static final String REACTCLASSNAME = "MyNativeModule";
  private Context mContext;

  public MyNativeModule(ReactApplicationContext reactContext) {
    super(reactContext);
    mContext = reactContext;
  }

  @Override
  public String getName() {
    return REACTCLASSNAME;
  }

  /**
   * 必须添加反射注解不然会报错
   * 这个方法就是ReactNative将要调用的方法,会通过此类名字调用
   * @param msg
   */
  @ReactMethod
  public void callNativeMethod(String msg) {
    Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show();
  }
}

第二步创建一个React包管理器实现ReactPackage将每个模块放到模块集合中

package com.mixture;

import com.facebook.react.ReactPackage;
import com.facebook.react.bridge.JavaScriptModule;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * Created by Administrator on 2016/9/22.
 */

public class MyReactPackage implements ReactPackage {

  @Override
  public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
    List<NativeModule> modules = new ArrayList<>();
    modules.add(new MyNativeModule(reactContext));
    return modules;
  }

  @Override
  public List<Class<? extends JavaScriptModule>> createJSModules() {
    return Collections.emptyList();
  }

  @Override
  public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
    return Collections.emptyList();
  }
}

第三步在应用入口注册这个React包管理器

package com.mixture;

import android.app.Application;
import android.util.Log;

import com.facebook.react.ReactApplication;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;

import java.util.Arrays;
import java.util.List;

public class MainApplication extends Application implements ReactApplication {

  private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
    @Override
    protected boolean getUseDeveloperSupport() {
      return BuildConfig.DEBUG;
    }

    @Override
    protected List<ReactPackage> getPackages() {
      return Arrays.<ReactPackage>asList(
          new MainReactPackage(),
          //在应用中注册这个包管理器
          new MyReactPackage()
      );
    }
  };

  @Override
  public ReactNativeHost getReactNativeHost() {
    return mReactNativeHost;
  }
}

第四步就是在ReactNative中调用react-native中提供一个NativeModules通过模块名字和方法名字进行调用

/**
 * Sample React Native App
 * https://github.com/facebook/react-native
 * @flow
 */

import React, {Component} from 'react';
import {
  AppRegistry,
  StyleSheet,
  Text,
  View,
  NativeModules,
} from 'react-native';

class Mixture extends Component {
  render() {
    return (
      <View style={styles.container}>
        <Text style={styles.instructions} onPress={() => this.onClick()}>
          调用用原生方法
        </Text>
      </View>
    );
  }

  /**
   * 调用原生方法
   */
  onClick() {
    NativeModules.MyNativeModule.callNativeMethod('成功调用原生方法');
  }
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  instructions: {
    textAlign: 'center',
    color: '#333333',
    marginBottom: 5,
  },
});

AppRegistry.registerComponent('Mixture', () => Mixture);

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
JScript中的&quot;this&quot;关键字使用方式补充材料
Mar 08 Javascript
5款Javascript颜色选择器
Oct 25 Javascript
javascript中slice(),splice(),split(),substring(),substr()使用方法
Mar 13 Javascript
jQuery实现购物车数字加减效果
Mar 14 Javascript
JS实现自动变换的菜单效果代码
Sep 09 Javascript
JavaScript中利用各种循环进行遍历的方式总结
Nov 10 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
May 03 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
Apr 25 Javascript
php中and 和 &amp;&amp;出坑指南
Jul 13 Javascript
微信小程序实现图片压缩
Dec 03 Javascript
Vue执行方法,方法获取data值,设置data值,方法传值操作
Aug 05 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
Oct 02 Javascript
微信小程序 实战小程序实例
Oct 08 #Javascript
node.js实现博客小爬虫的实例代码
Oct 08 #Javascript
阿里云ecs服务器中安装部署node.js的步骤
Oct 08 #Javascript
JavaScript“尽快失败”的原则实例详解
Oct 08 #Javascript
jQuery如何解决IE输入框不能输入的问题
Oct 08 #Javascript
微信小程序 canvas API详解及实例代码
Oct 08 #Javascript
微信小程序 animation API详解及实例代码
Oct 08 #Javascript
You might like
php基础学习之变量的使用
2011/06/09 PHP
日常整理PHP中简单的图形处理(经典)
2015/10/26 PHP
php实现zip文件解压操作
2015/11/03 PHP
php探针不显示内存解决方法
2019/09/17 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
让任务管理器中的CPU跳舞的js代码
2008/11/01 Javascript
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
JS实现超精简的链接列表在固定区域内滚动效果代码
2015/11/04 Javascript
需灵活掌握的Bootstrap预定义排版类 你精通吗?
2016/06/20 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
详解Vue中watch的高级用法
2018/05/02 Javascript
jQuery中$原理实例分析
2018/08/13 jQuery
通过angular CDK实现页面元素拖放的步骤详解
2020/07/01 Javascript
bootstrap-closable-tab可实现关闭的tab标签页插件
2020/08/09 Javascript
[45:40]Ti4 冒泡赛第二天NEWBEE vs NaVi 1
2014/07/15 DOTA
[00:58]2016年国际邀请赛勇士令状宣传片
2016/06/01 DOTA
[38:32]完美世界DOTA2联赛循环赛 Forest vs DM 第二场 11.06
2020/11/06 DOTA
Python实现竖排打印传单手机号码易撕条
2015/03/16 Python
利用python将xml文件解析成html文件的实现方法
2017/12/22 Python
记录Python脚本的运行日志的方法
2019/06/05 Python
python实现从本地摄像头和网络摄像头截取图片功能
2019/07/11 Python
Django 框架模型操作入门教程
2019/11/05 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
PyCharm 光标变成黑块的解决方式
2021/02/06 Python
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
英国钻石公司:British Diamond Company
2020/02/16 全球购物
Prototype如何实现页面局部定时刷新
2013/08/06 面试题
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
夜大毕业生自我评价分享
2013/11/10 职场文书
大二法学专业职业生涯规划范文
2014/02/12 职场文书
《胡杨》教学反思
2014/02/16 职场文书
2014年医生工作总结
2014/11/21 职场文书
教师专业技术工作总结2015
2015/05/13 职场文书
2015年女职工工作总结
2015/05/15 职场文书
党员学习中国梦心得体会
2016/01/05 职场文书