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 相关文章推荐
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
Mar 07 Javascript
Jquery+CSS3实现一款简洁大气带滑动效果的弹出层
May 15 Javascript
在javascript中如何得到中英文混合字符串的长度
Jan 17 Javascript
jQuery+ajax实现无刷新级联菜单示例
May 21 Javascript
JavaScript中Function函数与Object对象的关系
Dec 17 Javascript
AngularJS基础 ng-init 指令简单示例
Aug 02 Javascript
利用select实现年月日三级联动的日期选择效果【推荐】
Dec 13 Javascript
jQuery Form表单取值的方法
Jan 11 Javascript
浅谈regExp的test方法取得的值变化的原因及处理方法
Mar 01 Javascript
seajs模块压缩问题与解决方法实例分析
Oct 10 Javascript
使用async、enterproxy控制并发数量的方法详解
Jan 02 Javascript
详解如何使用router-link对象方式传递参数?
May 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
也谈截取首页新闻 - 范例
2006/10/09 PHP
PHP5中虚函数的实现方法分享
2011/04/20 PHP
基于MySQL到MongoDB简易对照表的详解
2013/06/03 PHP
PHP实践教程之过滤、验证、转义与密码详解
2017/07/24 PHP
用jquery的方法制作一个简单的导航栏
2014/06/23 Javascript
node.js中的fs.readFileSync方法使用说明
2014/12/15 Javascript
javascript实现仿腾讯游戏选择
2015/05/14 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
Node.js connect ECONNREFUSED错误解决办法
2016/09/15 Javascript
jQuery插件扩展操作入门示例
2017/01/16 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
在vue中获取dom元素内容的方法
2017/07/10 Javascript
基于Vue.js实现tab滑块效果
2017/07/23 Javascript
Angular入口组件(entry component)与声明式组件的区别详解
2018/04/09 Javascript
微信小程序实现通过js操作wxml的wxss属性示例
2018/12/06 Javascript
vue中动态select的使用方法示例
2019/10/28 Javascript
vue路由切换之淡入淡出的简单实现
2019/10/31 Javascript
[01:22:42]2014 DOTA2华西杯精英邀请赛 5 24 DK VS LGD
2014/05/26 DOTA
python网络编程调用recv函数完整接收数据的三种方法
2017/03/31 Python
Python 迭代器与生成器实例详解
2017/05/18 Python
Python3导入CSV文件的实例(跟Python2有些许的不同)
2018/06/22 Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
2019/01/10 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
Python 数据分析之逐块读取文本的实现
2020/12/14 Python
个人找工作的自我评价
2013/10/17 职场文书
高中军训感言600字
2014/03/11 职场文书
个人承诺书格式
2014/06/03 职场文书
政风行风自查自纠报告
2014/10/21 职场文书
大学生毕业个人总结
2015/02/15 职场文书
大学生村官入党自传
2015/06/26 职场文书
2015年教务处干事工作总结
2015/07/22 职场文书
学校体育节班级口号
2015/12/25 职场文书
初二物理教学反思
2016/02/19 职场文书
学习型家庭事迹材料(2016精选版)
2016/02/29 职场文书
SpringCloud Alibaba 基本开发框架搭建过程
2021/06/13 Java/Android
Elasticsearch 数据类型及管理
2022/04/19 Python