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 相关文章推荐
jQuery maxlength文本字数限制插件
Apr 16 Javascript
表格单元格交错着色实现思路及代码
Apr 01 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
Jul 12 Javascript
jquery对象和javascript对象即DOM对象相互转换
Aug 07 Javascript
JavaScript跨浏览器获取页面中相同class节点的方法
Mar 03 Javascript
onclick和onblur冲突问题的快速解决方法
Apr 28 Javascript
简单学习vue指令directive
Nov 03 Javascript
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
Jun 17 Javascript
利用Javascript实现一套自定义事件机制
Dec 14 Javascript
深入理解Node module模块
Mar 26 Javascript
基于JS实现一个随机生成验证码功能
May 29 Javascript
vue-router的hooks用法详解
Jun 08 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
Search Engine Friendly的URL设计
2006/10/09 PHP
PHP新手上路(十四)
2006/10/09 PHP
详谈PHP编码转换问题
2015/07/28 PHP
PHP HTTP 认证实例详解
2016/11/03 PHP
Yii 实现数据加密和解密
2021/03/09 PHP
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
jquery入门—数据删除与隔行变色以及图片预览
2013/01/07 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
JavaScript学习笔记之Function对象
2015/01/22 Javascript
JS的数组迭代方法
2015/02/05 Javascript
Jquery中使用show()与hide()方法动画显示和隐藏图片
2015/10/08 Javascript
AngularJS学习笔记(三)数据双向绑定的简单实例
2016/11/08 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
详解vue-cil和webpack中本地静态图片的路径问题解决方案
2017/09/27 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
2018/01/23 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
vue-cli3 DllPlugin 提取公用库的方法
2019/04/24 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
mustache.js实现首页元件动态渲染的示例代码
2020/12/28 Javascript
elementui实现预览图片组件二次封装
2020/12/29 Javascript
[03:40]DOTA2英雄梦之声_第01期_炼金术士
2014/06/23 DOTA
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
[49:08]Secret vs VP 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python根据出生日期获得年龄的方法
2015/03/31 Python
python使用正则表达式提取网页URL的方法
2015/05/26 Python
python实现转盘效果 python实现轮盘抽奖游戏
2019/01/22 Python
Python实现去除列表中重复元素的方法总结【7种方法】
2019/02/16 Python
Django 博客实现简单的全文搜索的示例代码
2020/02/17 Python
python用tkinter实现一个简易能进行随机点名的界面
2020/09/27 Python
北大研究生linux应用求职信
2013/10/29 职场文书
大学生职业规划论文
2014/01/11 职场文书
《永远的白衣战士》教学反思
2014/04/25 职场文书
水利水电建筑施工应届生求职信
2014/07/04 职场文书
2014年财务科工作总结
2014/11/11 职场文书
2015年小学体育工作总结
2015/05/22 职场文书
python基础之类方法和静态方法
2021/10/24 Python