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 相关文章推荐
Javascript中浮点数相乘的一个解决方法
Jun 03 Javascript
Javascript优化技巧之短路表达式详细介绍
Mar 27 Javascript
[原创]Javascript 实现广告后加载 可加载百度谷歌联盟广告
May 11 Javascript
深入理解JS继承和原型链的问题
Dec 17 Javascript
Angular.js中数组操作的方法教程
Jul 31 Javascript
原生JS实现图片无缝滚动方法(附带封装的运动框架)
Oct 01 Javascript
用 Vue.js 递归组件实现可折叠的树形菜单(demo)
Dec 25 Javascript
利用js实现前后台传送Json的示例代码
Mar 29 Javascript
vue.js层叠轮播效果的实例代码
Nov 08 Javascript
JS替换字符串中指定位置的字符(多种方法)
May 28 Javascript
小程序实现背景音乐播放和暂停
Jun 19 Javascript
vue 中使用print.js导出pdf操作
Nov 13 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
动画 《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
php auth_http类库进行身份效验
2009/03/19 PHP
超级简单的php+mysql留言本源码
2009/11/11 PHP
php 数据库字段复用的基本原理与示例
2011/07/22 PHP
php遍历文件夹所有文件子文件夹函数代码
2013/11/27 PHP
PHP积分兑换接口实例
2015/02/09 PHP
php异常处理方法实例汇总
2015/06/24 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
thinkPHP框架中layer.js的封装与使用方法示例
2019/01/18 PHP
解析prototype,JQuery中跳出each循环的方法
2013/12/12 Javascript
深入理解javascript变量声明
2014/11/20 Javascript
jquery加载图片时以淡入方式显示的方法
2015/01/14 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
AngularJS+Bootstrap实现多文件上传与管理
2016/11/08 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
Angularjs+bootstrap+table多选(全选)支持单击行选中实现编辑、删除功能
2017/03/27 Javascript
详解如何实现一个简单的 vuex
2018/02/10 Javascript
详解jQuery中的getAll()和cleanData()
2019/04/15 jQuery
vue-cli3添加模式配置多环境变量的方法
2019/06/05 Javascript
koa2 用户注册、登录校验与加盐加密的实现方法
2019/07/22 Javascript
vue下canvas裁剪图片实例讲解
2020/04/16 Javascript
零基础写python爬虫之HTTP异常处理
2014/11/05 Python
python3抓取中文网页的方法
2015/07/28 Python
一百多行python代码实现抢票助手
2018/09/25 Python
Django框架的中的setting.py文件说明详解
2018/10/15 Python
Python 识别12306图片验证码物品的实现示例
2020/01/20 Python
Python异常处理机制结构实例解析
2020/07/23 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
比利时网上药店: Drogisterij.net
2017/03/17 全球购物
马来西亚演唱会订票网站:StubHub马来西亚
2018/10/18 全球购物
100%植物性、有机、即食餐:Sakara Life
2018/10/25 全球购物
EJB的角色和三个对象
2015/12/31 面试题
2014两会学习心得:时代的发展
2014/03/17 职场文书
校友会致辞
2015/07/30 职场文书
市级三好生竞选稿
2015/11/21 职场文书