js实现界面向原生界面发消息并跳转功能


Posted in Javascript onNovember 22, 2016

本文实例为大家分享了js界面向原生界面发消息并跳转的具体代码,供大家参考,具体内容如下

步骤一
在idea中,打开rn项目下的./Android/app,这个过程需要一点儿时间,可能还需要下载gradle的依赖什么的。

步骤二
跟做原生app没差,我们新建一个TestActivity,简单起见,仅实现如下:

public class TestActivity extends AppCompatActivity {

  private Button mBtGoBack;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_test);
    mBtGoBack = (Button) findViewById(R.id.bt_go_back);
    mBtGoBack.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
        finish();
      }
    });

  }
}

步骤三
写一个类ExampleInterface extends ReactContextBaseJavaModule,在该类中接收消息。
具体代码:

public class ExampleInterface extends ReactContextBaseJavaModule {

  private ReactApplicationContext mRApplicationContext;

  public ExampleInterface(ReactApplicationContext reactContext) {
    super(reactContext);
    mRApplicationContext = reactContext;
  }

  //RN使用这个名称来调用原生模块的其他函数
  @Override
  public String getName() {
    return "ExampleInterface";
  }
  //必须写@ReactMethod,将其注册为能够被React调用的函数
  @ReactMethod
  public void HandlerMessage(String aMessage){
    Log.d("lt","====receive message from RN==="+aMessage);
     //这部分实现简单的跳转
    Intent intent = new Intent(mRApplicationContext,TestActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    mRApplicationContext.startActivity(intent); 
  }

}

步骤四

实现一个包管理器,并将接收消息的类ExampleInterface,注册进去。
代码如下:

public class AnExampleReactPackage implements ReactPackage {

  @Override
  public List<NativeModule> createNativeModules(ReactApplicationContext reactApplicationContext) {
    List<NativeModule> modules = new ArrayList<>();
    modules.add(new ExampleInterface(reactApplicationContext));
    return modules;
  }

  @Override
  public List<Class<? extends JavaScriptModule>> createJSModules() {
    return Collections.emptyList();
  }

  @Override
  public List<ViewManager> createViewManagers(ReactApplicationContext reactApplicationContext) {
    return Collections.emptyList();
  }
}

步骤五
在MainApplication中添加包管理类AnExampleReactPackage;

@Override
  protected List<ReactPackage> getPackages() {
   return Arrays.<ReactPackage>asList(
     new MainReactPackage(),
     new AnExampleReactPackage()
   );
  }

步骤六
在js界面,发送消息;

buttonPress:function(){
  NativeModules.ExampleInterface.HandlerMessage('test');
  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS 日期验证正则附asp日期格式化函数
Sep 11 Javascript
最新28个很棒的jQuery 教程
May 28 Javascript
JavaScript基础篇之变量作用域、传值、传址的简单介绍与实例
Jun 29 Javascript
JavaScript 学习笔记之数据类型
Jan 14 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
Mar 03 Javascript
JavaScript的设计模式经典之建造者模式
Feb 24 Javascript
JS定时器用法分析【时钟与菜单中的应用】
Dec 21 Javascript
vuejs绑定class和style样式
Apr 11 Javascript
Vue CLI3中使用compass normalize的方法
May 30 Javascript
jQuery 筛选器简单操作示例
Oct 02 jQuery
three.js利用gpu选取物体并计算交点位置的方法示例
Nov 25 Javascript
JavaScript实现雪花飘落效果
Dec 27 Javascript
JavaScript面向对象分层思维全面解析
Nov 22 #Javascript
浅析location.href跨窗口调用函数
Nov 22 #Javascript
Angular和Vue双向数据绑定的实现原理(重点是vue的双向绑定)
Nov 22 #Javascript
AngularJS全局scope与Isolate scope通信用法示例
Nov 22 #Javascript
基于js实现checkbox批量选中操作
Nov 22 #Javascript
BootStrap中关于Select下拉框选择触发事件及扩展
Nov 22 #Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
Nov 22 #Javascript
You might like
php关于array_multisort多维数组排序的使用说明
2011/01/04 PHP
PHP实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
php微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
php+mysql开发中的经验与常识小结
2019/03/25 PHP
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
jQuery提交多个表单的小技巧
2014/07/27 Javascript
AngularJS入门教程之 XMLHttpRequest实例讲解
2016/07/27 Javascript
js 判断附件后缀的简单实现方法
2016/10/11 Javascript
Ajax+FormData+javascript实现无刷新表单信息提交
2016/10/24 Javascript
JavaScript实现的select点菜功能示例
2017/01/16 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
2017/05/17 Javascript
vue router动态路由下让每个子路由都是独立组件的解决方案
2018/04/24 Javascript
jQuery实现滑动开关效果
2020/08/02 jQuery
Javascript 模拟mvc实现点餐程序案例详解
2020/12/24 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[01:02:17]2014 DOTA2华西杯精英邀请赛 5 24 DK VS VG
2014/05/26 DOTA
python实现可将字符转换成大写的tcp服务器实例
2015/04/29 Python
详解Python之unittest单元测试代码
2018/01/24 Python
Pycharm无法使用已经安装Selenium的解决方法
2018/10/13 Python
解决python3读取Python2存储的pickle文件问题
2018/10/25 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
Python数据可视化 pyecharts实现各种统计图表过程详解
2019/08/15 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
python绘制动态曲线教程
2020/02/24 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
纯CSS3实现运行时钟的示例代码
2021/01/25 HTML / CSS
使用html5+css3来实现slider切换效果告别javascript+css
2013/01/08 HTML / CSS
纽约家具、家居装饰和地毯店:ABC Carpet & Home
2017/06/21 全球购物
英文自荐信
2013/12/19 职场文书
应聘面试自我评价
2014/01/24 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
2014教师年度思想工作总结
2014/11/10 职场文书
《敬重卑微》读后感3篇
2019/11/26 职场文书
Java实现房屋出租系统详解
2021/10/05 Java/Android
Android自定义双向滑动控件
2022/04/19 Java/Android