React Native 与 嵌入Android原生与Activity页面相互跳转,步伐人生 ...

打印 上一主题 下一主题

主题 1076|帖子 1076|积分 3228

errorBack.invoke(e.getMessage());
}
}
//留意:startActivityFromJS、dataToJS方法添加RN注解(@ReactMethod),否则该方法将不被添加到RN中
}
第三步,创建MyReactPackage类

实现ReactPackage接口袒露给RN调用,在createNativeModules里注册上一步添加的模块:
/**


  • 注册模块
*/
public class MyReactPackage implements ReactPackage {
@Override
public List createNativeModules(ReactApplicationContext reactContext) {
return Arrays.asList(new MyIntentModule(reactContext));
}
@Override
public List createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
}
第四步,在MainApplication中的getPackages方法中注册到ReactPackage中:

@Override
protected List getPackages() {
return Arrays.asList(
new MainReactPackage(),
new MyReactPackage()
);
}
第五步,接下来的工作便是RN的Index.js代码:

import React, { Component } from ‘react’;
import {
View,
NativeModules,
TouchableNativeFeedback,
ToastAndroid
} from ‘react-native’;
export default class App extends Component<{}> {
_onPressButton() {
console.log(“You tapped the button!”);
NativeModules
.IntentMoudle
.startActivityFromJS(“com.myreactdemo.MyActivity”, null);
}
render() {
return (
      跳转到原生页面  
);
}
}
第六步,从Android跳转到RN页面

可以在rn中拿到activity跳转通报的值,值的通报跟普通activity之间的跳转没有差别:
[javascript] view plain copy
getData() {
NativeModules.IntentModule.dataToJS((msg) => {
console.log(msg);
let base = require(‘./constant’);
base.columnID = msg;
//ToastAndroid.show(‘JS界面:从Activity中传输过来的数据为:’ + base.columnID, ToastAndroid.SHORT);
},
(result) => {
ToastAndroid.show(‘JS界面:错误信息为:’ + result, ToastAndroid.SHORT);
})
}
拿到这个值之后存在了常量类里,就是通过这个常量来实现跳转到差别的界面,之后的事情就迎刃而解了:
[java] view plain copy
componentDidMount() {
let base = require(‘./constant’);
//ToastAndroid.show(base.columnID, ToastAndroid.SHORT);
let id = base.columnID;
if (id == “3”) {
const { navigator } = this.props;
if (navigator) {
navigator.push({
name: ‘secondPage’,
component: secondPage,
})
}
} if (id == “4”) {
const { navigator } = this.props;
if (navigator) {
navigator.push({
name: ‘otherPage’,
component: otherPage,
})
}
}
}
第七步,运行安装:

输入命令启动应用:
1.进入项目根目录:
cd MyReactDemo
2.运行:
react-native run-android
*如果装备没安装上AwesomeProject,可直接用Android studio或eclipse开发工具打开AwesomeProject文件里的Android项目,点击run运行安装即可。运行应用首先需要启动开发服务器(Packager)
npm start
学习分享,共勉

题外话,我从事Android开发已经五年了,此前我指导过不少同行。但很少跟各人一起探讨,正好近来我花了一个多月的时间整理出来一份包括不限于高级UI、性能优化、移动架构师、NDK、混合式开发(ReactNative+Weex)微信小步伐、Flutter等全方面的Android进阶实践技能,今天暂且开放给有需要的人,如有关于此方面可以关注+点赞后领取,或者批评与我一起交流探讨。


资料免费领取方式:转发+关注+点赞后,参加点击链接参加群聊:Android高级开发交流群(818520403)即可获取免费领取方式!
重要的事说三遍,关注!关注!关注!
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到如今。
深知大多数初中级Android工程师,想要提拔技能,每每是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学结果低效又漫长,而且极易碰到天花板技能停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初志也很简单,就是希望能够帮助到想自学提拔又不知道该从何学起的朋友,同时减轻各人的负担。





既有适合小白学习的零基础资料,也有适合3年以上经验的小搭档深入学习提拔的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比力大,这里只是将部分目录截图出来,每个节点内里都包含大厂面经、学习条记、源码讲义、实战项目、讲解视频,而且会连续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)
学习分享,共勉

Android高级架构师进阶之路
题外话,我在阿里工作多年,深知技能改革和创新的方向,Android开发以其雅观、快速、高效、开放等上风迅速俘获民气,但很多Android爱好爱好者所需的进阶学习资料确实不太体系,完整。今天我把我搜集和整理的这份学习资料分享给有需要的人


  • Android进阶知识体系学习脑图



  • Android进阶高级工程师学习全套手册



  • 对标Android阿里P7,年薪50w+学习视频



  • 大厂内部Android高频面试题,以及面试经历

《互联网大厂面试真题剖析、进阶开发核心学习条记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
Android进阶高级工程师学习全套手册
[外链图片转存中…(img-DOMduK36-1712792733669)]


  • 对标Android阿里P7,年薪50w+学习视频
[外链图片转存中…(img-jTduVIPt-1712792733670)]


  • 大厂内部Android高频面试题,以及面试经历
[外链图片转存中…(img-xKlHJK4Z-1712792733670)]
《互联网大厂面试真题剖析、进阶开发核心学习条记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

勿忘初心做自己

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表