zoukankan      html  css  js  c++  java
  • 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);
      }
    }
    

     注意逗号哦

    对了 需要重新编译才行哦。 

  • 相关阅读:
    Mac终端编写c语言程序方法
    X-code最常用快捷键
    类方法和实例方法区别
    一、SQL语句中的增、删、查、改
    从零开始,学习web前端之HTML基础
    图片 自适应 容器大小
    Java第二天 数据类型
    Java 第一天
    javascript的基础知识
    JavaScript(一)
  • 原文地址:https://www.cnblogs.com/allenxieyusheng/p/7473576.html
Copyright © 2011-2022 走看看