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);
      }
    }
    

     注意逗号哦

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

  • 相关阅读:
    ADO.NET_01_概述
    我对持久层的一点看法
    浅谈极限编程(XP)和代码重构(Refectoring)
    设计模式_第一篇_开场
    .NET OracleLob 读写操作
    ASP.NET_ASP.NET Cookies
    设计模式_第二篇_策略模式
    Oracle_C# 实现 Oracle Text(全文检索)的一个简单例子
    IKVM.NET_06_用户指南_教程
    ADO.NET_02_DataTable
  • 原文地址:https://www.cnblogs.com/allenxieyusheng/p/7473576.html
Copyright © 2011-2022 走看看