RN原生调用一:安卓Toast
首先安卓原生方法: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);
  }
}
注意逗号哦
对了 需要重新编译才行哦。
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号