android studio 显示向前向后按键 android studio按钮页面跳转_Android


前言:作为前端首次接触Android还真有点懵逼(再次感谢我的同事-java开发工程),一步一个脚印,Android也算是入了门,做RN基本上够用了。

建议:想做RN开发的同学简单学习下Android,Android中的代码风格,项目结构等等也都可以用到前端项目中(菜鸟见解)。

网上有很多这样的文章,我简单总结下(我用的Android Studio)。

一、RN调用Android方法

解释:这是一个RN调用Android方法跳转Android页面的例子,你可将startActivity方法中内容删除换成你需要逻辑。

1、首先在Android项目中创建一个class类(类名随意),姑且叫MainMethods,集成ReactContextBaseJavaModule类,然后吗?Android Studio很强大,Alt+Enter自动构建方法。(上图)


android studio 显示向前向后按键 android studio按钮页面跳转_Android_02


startActivity方法使用@ReactMethod暴露给RN


startActivity方法就是给RN中调用的,里面内容逻辑跟随自己业务来。

Android方法有了,下一步就注册方法。

2,又在创建一个class类(类名随意),姑且叫MainRNPackage,集成ReactPackage类,然后吗?Android Studio很强大,Alt+Enter自动构建方法。(上图)


android studio 显示向前向后按键 android studio按钮页面跳转_Android_03


将MainMethods类注册到RN中。

3、然后打开MainApplication类(没有的话自己创建一个),将上一步的MainRNPackage类注册到MainApplication中。(上图)


android studio 显示向前向后按键 android studio按钮页面跳转_Android_04


到这步Android中的发送就已经创建好了,也都暴露到RN原型上了,下一步RN调用Android方法。

4、现在Android中的方法都创建好了,我们怎么在RN中调用了。(上图)


android studio 显示向前向后按键 android studio按钮页面跳转_Android_05


使用RN中的NativeModules放中调用android中startActivity方法

使用NativeModules调用Android MainMethods类下startActivity方法


NativeModules.MainMethods.startActivity('xtt.android.doctor.LiveVideoActivity', data)


有同学会问你这是传的是什么东西,其实我这是一个RN跳转Android页面的封装方法,传递Android需要的class类名和参数跳转页面。

二、Android调用RN方法

1,新建一个class类(类名随意),姑且叫:EventEmitter类,定义一个static(静态)的变量mReactContext和方法sendEvent。(上图)


android studio 显示向前向后按键 android studio按钮页面跳转_Android_06


这里定义好sendEvent方法,他接受两个参数:

第一个参数:方法名,你需要调用RN的方法名

第二个参数:传参数,你需要传递的参数

下面这句代码是调用RN中的方法,emit(eventName,params)中的参数与上面的两个参数对应。


mReactContext.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class).emit(eventName,params);


2、还记得MainRNPackage类吗,不管是Android调用RN方法也是需要这个类的,这个类初始化会有一个reactContext(RN上下文)参数,你需要保存起来,不管是用全局变量保存还是别的方法。(上图)


android studio 显示向前向后按键 android studio按钮页面跳转_Android_07


看到那个EventEmitter.mReactContext没有,对的我就是这样保存reactContext(RN上下文)的

3、现在方法有了怎么用了,比如......。(上图)


android studio 显示向前向后按键 android studio按钮页面跳转_Android_08


直接调用EventEmitter下的sendEvent方法,传入方法名和参数(我这里传null是因为我这里不需要传参)


EventEmitter.sendEvent("RN的方法名",参数);


4、那Android调用了EventEmitter.sendEvent("liveEndCallback",null)方法我RN这边页面要怎么接收了,直接。(上图)


android studio 显示向前向后按键 android studio按钮页面跳转_Android_09


使用RN中的DeviceEventEmitter.addListener监听Android中的EventEmitter.sendEvent("liveEndCallback",null)方法,方法名要保持一致。

记住页面销毁的时候,移除监听,这样是完成了。