集成跳转以及传值

集成跳转以及传值
    步骤:
            1.创建一个类继承 ReactPackage(重写的两个方法)
                    //创建原声模块 注册绑定
                    @Override
                    public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
                    
                       List<NativeModule> list = new ArrayList<>();
                       list.add(new ToastModule(reactContext));
                       list.add(new CommunicationMoudle(reactContext));
                        return list;
                    }
                    //创建原生UI组件注册绑定
                    @Override
                    public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
                    //UI组件  
                            List<ViewManager> list = new ArrayList<>();
                        return list;
                    }    
            2.    创建一个类继承于    ReactContextBaseJavaModule(重写两个方法)
                public CommunicationMoudle(ReactApplicationContext reactContext) {
                        super(reactContext);//自身构造方法
                    }
                        //这个返回一个名字  在RN中调用这个名字
                    @Override
                    public String getName() {
                        return "AndroidTab";
                    }
                    //===================以下是自己写的方法,必须是无返的=======================================
                    //RN----->Android 通过参数进行传值
                    @ReactMethod
                    public void RNtoAndroid(String str1,String str2){
                        Toast.makeText(getReactApplicationContext(),str1+str2,Toast.LENGTH_LONG).show();
                    }
                    
                    //Android 给RN传值
                    @ReactMethod
                    public void AndroidToRNCallback(Callback callback){
                        callback.invoke("Android");
                    }

                    //  第二种方式 RN给android 传    Android 给Rn传
                    @ReactMethod
                    public void AnroidToRNPromise(String msg,Promise promise){
                        Toast.makeText(getReactApplicationContext(),msg,Toast.LENGTH_LONG).show();
                        promise.resolve("Android 给 RN传一个值");
                    }
                    
                    
                    //带值跳转到 Activity2 ================>RN带值跳转Activity
                    @ReactMethod
                    public void RNGOTO(String name,String age){
                        Intent intent = new Intent(getReactApplicationContext(),Main2Activity.class);
                        intent.putExtra("name",name);
                        intent.putExtra("age",age);
                        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                        getReactApplicationContext().startActivity(intent);
                    }
这是RN页面写的东西
            NativeModules   导入这个包
                import { View, Text, NativeModules, Button } from "react-native";

                //RN跳Android 
              AA = () => {
                NativeModules.AndroidTab.RNtoAndroid("撒扩大解放了喀什", "第二个参数");
              };
              //Android 跳RN 第一种方式
              CC = () => {
                NativeModules.AndroidTab.AndroidToRNCallback(tt => {
                  alert(tt);
                });
              };
                //Android 跳RN 第二种方式          
              DD = () => {
                NativeModules.AndroidTab.AnroidToRNPromise("李四").then(result => {
                  alert(result);
                });
              };
              //这是RN跳到Activity 页面(带值跳转)
              EE = () => {
                NativeModules.AndroidTab.RNGOTO("李四", "sdf手动阀手动阀");
              };
                
                //点击事件
        <View>
        <Button onPress={this.AA} title="RNtoAndroid" />
        <Button onPress={this.CC} title="AndroidToRNCallback" />
        <Button onPress={this.DD} title="AnroidToRNPromise" />
        <Button onPress={this.EE} title="RNGOTO" />
        </View>
                
            一定要牢记:运行的时候,先把RN关了再Rebuite    然后就可以运行了 ,如果不行,就多Rebuite几次

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值