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 相关文章推荐
Tinymce+jQuery.Validation使用产生的BUG
Mar 29 Javascript
javascript时间函数基础介绍
Mar 28 Javascript
JS获取屏幕,浏览器窗口大小,网页高度宽度(实现代码)
Dec 17 Javascript
jQuery对象初始化的传参方式
Feb 26 Javascript
jQuery往返城市和日期查询实例讲解
Oct 09 Javascript
拥Bootstrap入怀——导航栏篇
May 30 Javascript
BootStrap智能表单实战系列(七)验证的支持
Jun 13 Javascript
利用bootstrapValidator验证UEditor
Sep 14 Javascript
KnockoutJS 3.X API 第四章之表单value绑定
Oct 10 Javascript
Vue使用json-server进行后端数据模拟功能
Apr 17 Javascript
在vue中读取本地Json文件的方法
Sep 06 Javascript
vue实现与安卓、IOS交互的方法
Nov 02 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
《星际争霸重制版》兵种对比图鉴
2020/03/02 星际争霸
PHP 函数学习简单小结
2010/07/08 PHP
php投票系统之增加与删除投票(管理员篇)
2016/07/01 PHP
javascript之卸载鼠标事件的代码
2007/05/14 Javascript
IE浏览器打印的页眉页脚设置解决方法
2009/12/08 Javascript
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
2020/09/13 Javascript
html+js+highcharts绘制圆饼图表的简单实例
2016/08/04 Javascript
微信小程序实现下拉菜单切换效果
2020/03/30 Javascript
基于node简单实现RSA加解密的方法步骤
2019/03/21 Javascript
解决layui的table插件无法多层级获取json数据的问题
2019/09/19 Javascript
vue相同路由跳转强制刷新该路由组件操作
2020/08/05 Javascript
[06:07]DOTA2-DPC中国联赛3月5日Recap集锦
2021/03/11 DOTA
跟老齐学Python之玩转字符串(3)
2014/09/14 Python
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
python 的 openpyxl模块 读取 Excel文件的方法
2019/09/09 Python
tensorflow 实现自定义梯度反向传播代码
2020/02/10 Python
详解pycharm2020.1.1专业版安装指南(推荐)
2020/08/07 Python
如何利用Python 进行边缘检测
2020/10/14 Python
Python实现中英文全文搜索的示例
2020/12/04 Python
pycharm 使用anaconda为默认环境的操作
2021/02/05 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
5 个强大的HTML5 API 函数推荐
2014/11/19 HTML / CSS
韩国三大免税店之一:THE GRAND 中文免税店
2016/07/21 全球购物
英国领先的电视购物零售商:Ideal World
2019/03/18 全球购物
会计自我鉴定
2013/11/02 职场文书
邮政员工辞职信
2014/01/16 职场文书
护士求职自荐信范文
2014/03/19 职场文书
加入学生会演讲稿
2014/04/24 职场文书
2014年银行客户经理工作总结
2014/11/12 职场文书
2015年预算员工作总结
2015/05/14 职场文书
销售会议开幕词
2016/03/04 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers
在Centos 8.0中安装Redis服务器的教程详解
2022/03/21 Redis