博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
react-native 调用原生方法
阅读量:4325 次
发布时间:2019-06-06

本文共 3512 字,大约阅读时间需要 11 分钟。

基于RN0.40。

MyNativeModule.java

package com.www;  //路径名字 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;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();  }}

 

MyReactPackage.java

package com.www; 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; public class MyReactPackage implements ReactPackage {   @Override  public List
createNativeModules(ReactApplicationContext reactContext) { List
modules = new ArrayList<>(); modules.add(new MyNativeModule(reactContext)); return modules; } @Override public List
> createJSModules() { return Collections.emptyList(); } @Override public List
createViewManagers(ReactApplicationContext reactContext) { return Collections.emptyList(); }}

 

MainApplication.java

package com.www;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 com.facebook.soloader.SoLoader;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
getPackages() { return Arrays.
asList( new MainReactPackage(), new MyReactPackage() //只需添加这里 ); } }; @Override public ReactNativeHost getReactNativeHost() { return mReactNativeHost; } @Override public void onCreate() { super.onCreate(); SoLoader.init(this, /* native exopackage */ false); }}

 

index.android.js

import React, {Component} from 'react';import {  AppRegistry,  StyleSheet,  Text,  View,  NativeModules,} from 'react-native'; class www extends Component {  render() {    return (      
this.onClick()}> 点我
); } /** * 调用原生方法 */ 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('www', () => www);

 

转载于:https://www.cnblogs.com/shen076/p/6379962.html

你可能感兴趣的文章
秒杀多线程第四篇 一个经典的多线程同步问题
查看>>
RocketMQ配置
查看>>
vs code调试console程序报错--preLaunchTask“build”
查看>>
蚂蚁金服井贤栋:用技术联手金融机构,形成服务小微的生态合力
查看>>
手机通话记录统计分析
查看>>
富文本编辑器比较
查看>>
端口号大全
查看>>
在oracle 12c上如何禁用haip,以及打开haip,以及对haip的理解
查看>>
实验七——Web应用测试(bookstore项目上完成)
查看>>
环信即时通讯在工程中的安装——Nusen_Liu
查看>>
bzoj千题计划141:bzoj3532: [Sdoi2014]Lis
查看>>
VScode 搭建 django 开发环境(MAC、Python3.7)
查看>>
vc2010, fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt解决办法
查看>>
通过sql脚本可以从数据库中查到数据,但是通过jdbc却获取不到
查看>>
ApiDoc 一键生成注释
查看>>
完善的IaaS云服务的个人理解
查看>>
机器学习基石笔记2——在何时可以使用机器学习(2)
查看>>
螺旋数字的python实现
查看>>
easyUI
查看>>
五个最佳编程文本编辑器
查看>>