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 相关文章推荐
讲两件事:1.this指针的用法小探. 2.ie的attachEvent和firefox的addEventListener在事件处理上的区别
Apr 12 Javascript
js 弹出框 替代浏览器的弹出框
Oct 29 Javascript
jQuery总体架构的理解分析
Mar 07 Javascript
用JavaScript获取DOM元素位置和尺寸大小的方法
Apr 12 Javascript
jQuery动态修改超链接地址的方法
Feb 13 Javascript
javascript实现label标签跳出循环操作
Mar 06 Javascript
jQuery中layer分页器的使用
Mar 13 Javascript
详解Vue 事件驱动和依赖追踪
Apr 22 Javascript
jquery网页加载进度条的实现
Jun 01 jQuery
JS继承与闭包及JS实现继承的三种方式
Oct 15 Javascript
layui switch 开关监听 弹出确定状态转换的例子
Sep 21 Javascript
layui内置模块layim发送图片添加加载动画的方法
Sep 23 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操作xml
2013/10/27 PHP
Ubuntu下安装PHP的mongodb扩展操作命令
2015/07/04 PHP
PHP请求远程地址设置超时时间的解决方法
2016/10/29 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
IE本地存储userdata的一个bug说明
2010/07/01 Javascript
javascript完美拖拽的实现方法
2013/09/29 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
浅谈Javascript中的Function与Object
2015/01/26 Javascript
jQuery插件pagewalkthrough实现引导页效果
2015/07/05 Javascript
JavaScript统计网站访问次数的实现代码
2015/11/18 Javascript
js实现文字滚动效果
2016/03/03 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
基于vue打包后字体和图片资源失效问题的解决方法
2018/03/06 Javascript
vue2.0模拟锚点的实例
2018/03/14 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
小程序云函数调用API接口的方法
2019/05/17 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
jQuery+css实现的点击图片放大缩小预览功能示例【图片预览 查看大图】
2020/05/29 jQuery
vue3+typescript实现图片懒加载插件
2020/10/26 Javascript
Python cx_freeze打包工具处理问题思路及解决办法
2016/02/13 Python
django使用图片延时加载引起后台404错误
2017/04/18 Python
Python实现将sqlite数据库导出转成Excel(xls)表的方法
2017/07/17 Python
对python 多线程中的守护线程与join的用法详解
2019/02/18 Python
python实现图片上添加图片
2019/11/26 Python
tensorflow2.0教程之Keras快速入门
2021/02/20 Python
ruby如何进行集成操作?Ruby能进行多重继承吗?
2013/10/16 面试题
三下乡活动方案
2014/01/31 职场文书
小学六年级学生评语
2014/04/22 职场文书
禁毒宣传标语
2014/06/19 职场文书
幼儿园安全责任书范本
2014/07/24 职场文书
财务检查整改报告
2014/11/06 职场文书
投资意向协议书
2015/01/29 职场文书
2015年服务员个人工作总结
2015/05/27 职场文书