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 JSON实现无刷新三级联动实例探讨
May 28 Javascript
原生javascript图片自动或手动切换示例附演示源码
Sep 04 Javascript
js中回调函数的学习笔记
Jul 31 Javascript
js实现div层缓慢收缩与展开的方法
May 11 Javascript
JavaScript中String.prototype用法实例
May 20 Javascript
AngularJS API之copy深拷贝详解及实例
Sep 14 Javascript
jquery实现tab键进行选择后enter键触发click行为
Mar 29 jQuery
详解基于vue的移动web app页面缓存解决方案
Aug 03 Javascript
vue2组件之select2调用的示例代码
Oct 12 Javascript
详解vue2.6插槽更新v-slot用法总结
Mar 09 Javascript
JQuery常见节点操作实例分析
May 15 jQuery
微信小程序实现电影App导航和轮播
Nov 30 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中使用parse_url()对网址进行解析的实现代码(parse_url详解)
2012/01/03 PHP
PHP中的cookie不用刷新就生效的方法
2012/02/04 PHP
php模板函数 正则实现代码
2012/10/15 PHP
深入理解PHP中的Session和Cookie
2013/06/21 PHP
javascript this用法小结
2008/12/19 Javascript
JQERY limittext 插件0.2版(长内容限制显示)
2010/08/27 Javascript
apycom出品的jQuery精美菜单破解方法
2011/02/18 Javascript
jquery.messager.js插件导致页面抖动的解决方法
2013/07/14 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
jquery使用hide方法隐藏指定id的元素
2015/03/30 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
AngularJS+Node.js实现在线聊天室
2015/08/28 Javascript
jquery mobile界面数据刷新的实现方法
2016/05/28 Javascript
js记录点击某个按钮的次数-刷新次数为初始状态的实例
2017/02/15 Javascript
promise处理多个相互依赖的异步请求(实例讲解)
2017/08/03 Javascript
详解关于vue2.0工程发布上线操作步骤
2018/09/27 Javascript
uni-app实现获取验证码倒计时功能
2020/11/01 Javascript
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
[45:16]完美世界DOTA2联赛PWL S3 Magma vs Phoenix 第一场 12.12
2020/12/16 DOTA
在Python3中使用asyncio库进行快速数据抓取的教程
2015/04/02 Python
Python获取央视节目单的实现代码
2015/07/25 Python
Python图像处理实现两幅图像合成一幅图像的方法【测试可用】
2019/01/04 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
使用python os模块复制文件到指定文件夹的方法
2019/08/22 Python
Soft Cotton捷克:来自爱琴海棉花的浴袍
2017/02/01 全球购物
英国皇室御用百货:福南梅森(Fortnum & Mason)
2017/12/03 全球购物
怎样写好自荐信和推荐信
2013/12/26 职场文书
银行贷款承诺书
2014/03/29 职场文书
2015年毕业生自我鉴定模板
2014/09/19 职场文书
2014年医院工作总结
2014/11/20 职场文书
万能检讨书
2015/01/27 职场文书
2015年档案室工作总结
2015/05/23 职场文书
同事离别感言
2015/08/04 职场文书
opencv读取视频并保存图像的方法
2021/06/04 Python
python高温预警数据获取实例
2022/07/23 Python