首先安卓原生方法:Toast.makeText(getApplicationContext(), "默认的Toast", Toast.LENGTH_SHORT);
在RN中js如何使用原生的这个方法呢?
一·创建方法类(包含你所要实现的方法);
二·包管理注册这个类 成为一个包
三·将这个包 添加注入主文件中:MainApplication.java
一:创建一个类
package com.pp; import android.widget.Toast; import com.facebook.react.bridge.ReactApplicationContext; import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; class ToastModule extends ReactContextBaseJavaModule { public ToastModule(ReactApplicationContext reactContext) { super(reactContext); } @Override public String getName() { return "ToastExample"; } @ReactMethod public void show(String message) { Toast.makeText(getReactApplicationContext(), message,Toast.LENGTH_SHORT).show(); } }
这个 ToastModule类继承(extends) ReactContextBaseJavaModule 并且实现了构造函数-getName()返回模块名称 --以及所要实现的方法着三种
在Rn的js中就可以通过 NativeModules.ToastExample.show来调用show这个方法啦!但是别急 下一步注册包
二·创建一个类
package com.pp; import com.facebook.react.ReactPackage; 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 AnExampleReactPackage implements ReactPackage { @Override public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { return Collections.emptyList(); } @Override public List<NativeModule> createNativeModules( ReactApplicationContext reactContext) { List<NativeModule> modules = new ArrayList<>(); modules.add(new ToastModule(reactContext)); return modules; } }
这个 AnExampleReactPackage类 实现了 ReactPackage这个类 然后就 ToastModule加入 我们就成之位package包吧。
三·交给老大MainAppliction.java
package com.pp; import android.app.Application; import com.facebook.react.ReactApplication; 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 public boolean getUseDeveloperSupport() { return BuildConfig.DEBUG; } @Override protected List<ReactPackage> getPackages() { return Arrays.<ReactPackage>asList( new MainReactPackage(), new AnExampleReactPackage() ); } }; @Override public ReactNativeHost getReactNativeHost() { return mReactNativeHost; } @Override public void onCreate() { super.onCreate(); SoLoader.init(this, /* native exopackage */ false); } }
注意逗号哦
对了 需要重新编译才行哦。