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 相关文章推荐
iframe 自适应高度[在IE6 IE7 FF下测试通过]
Apr 13 Javascript
javascript KeyDown、KeyPress和KeyUp事件的区别与联系
Dec 03 Javascript
javascript event 事件解析
Jan 31 Javascript
Jquery多选框互相内容交换的实例代码
Jul 04 Javascript
jquery事件与函数的使用介绍
Sep 29 Javascript
详解JavaScript中的Unescape()和String() 函数
Nov 09 Javascript
jquery实现手机端单店铺购物车结算删除功能
Feb 22 Javascript
JavaScript中数组Array.sort()排序方法详解
Mar 01 Javascript
微信小程序实现点击返回顶层的方法
Jul 12 Javascript
AngularJS实现的base64编码与解码功能示例
May 17 Javascript
如何在Vue中抽离接口配置文件
Oct 31 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
Mar 31 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实现把数组按指定的个数分隔
2014/02/17 PHP
浅谈json_encode用法
2015/03/05 PHP
PHP递归获取目录内所有文件的实现方法
2016/11/01 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
JavaScript的面向对象方法以及差别
2008/03/31 Javascript
javascript concat数组累加 示例
2009/09/03 Javascript
Js 刷新框架页的代码
2010/04/13 Javascript
javascript常用对话框小集
2013/09/13 Javascript
jQuery处理xml格式的返回数据(实例解析)
2013/11/28 Javascript
javascript圆盘抽奖程序实现原理和完整代码例子
2014/06/03 Javascript
jQuery中常用动画效果函数(日常整理)
2016/09/17 Javascript
利用JS制作万年历的方法
2017/08/16 Javascript
JavaScript实现简单动态进度条效果
2018/04/06 Javascript
javascript获取select值的方法完整实例
2019/06/20 Javascript
详解三种方式在React中解决绑定this的作用域问题并传参
2020/08/18 Javascript
python将文本转换成图片输出的方法
2015/04/28 Python
PyCharm代码整体缩进,反向缩进的方法
2018/06/25 Python
python 剪切移动文件的实现代码
2018/08/02 Python
python多个模块py文件的数据共享实例
2019/01/11 Python
Django JWT Token RestfulAPI用户认证详解
2019/01/23 Python
python 对字典按照value进行排序的方法
2019/05/09 Python
Python中sys模块功能与用法实例详解
2020/02/26 Python
利用Python制作动态排名图的实现代码
2020/04/09 Python
python实现二分查找算法
2020/09/18 Python
Django通过设置CORS解决跨域问题
2020/11/26 Python
阿迪达斯香港官网:adidas香港
2019/11/09 全球购物
Deichmann英国:德国鞋类零售商
2021/01/30 全球购物
大学生优秀团员事迹材料
2014/01/30 职场文书
学员自我鉴定
2014/03/19 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
求职自荐信范文(优秀篇)
2015/03/27 职场文书
2015年妇幼卫生工作总结
2015/05/23 职场文书
人间正道是沧桑观后感
2015/06/15 职场文书
红楼梦读书笔记
2015/06/25 职场文书
MySQL sql_mode的使用详解
2021/05/08 MySQL
Nginx 常用配置
2022/05/15 Servers