Android原生编写的UI组件,如何给JS提供方法?



  • 需求

    • 通过Android实现"树"组件作为原生UI组件,给RN项目使用。并且提供接口给JS,让JS能够获取到“树”组件中各个元素的状态。

    遇到的问题

    • 【不知道如何给JS提供方法】:我是参考,使用指南(android)中原生UI组件的文档的文档来编写桥接流程的,其中没有提到给JS提供方法的说明(只有通过事件,但是事件的触发并不在我写的组件中进行),所以就卡在了这一步。但是,使用指南(Android)中的原生模块的文档中,可以使用@ReactMethod 给JS提供方法。

    项目紧急求助各位!



  • 我是这么做的: js 监听某个native发出的事件。官方中文文档-发送事件到JavaScript



    • 非常感谢回答
    • 可是在SimpleViewManager中无法获取到ReactContextBaseJavaModule的实体。
    • 数据在adapter中,能够通过Manager获取adapter中的数据,但是无法将获取到的数据传到Module中。
    • 如果通过Module来向JS传递数据的话,那么如何将数据从Manager中传到Module中呢?


  • @Likarl 1. SimpleViewManager 最终继承的也是 BaseJavaModule

    1. 你所说的 Module 应该就是android中的view吧?如果是这样的话那就在你自定义的view中创建一个方法获取/设置数据即可


    • 这里的Module指的是ReactContextBaseJavaModule的子类
    • 需求:JS通过自己的按钮点击之后,获取到安卓原生UI组件(树组件)中的各个元素的状态。
    • 我的思路是在Manager中获取到数据,然后传递给ReactContextBaseJavaModule的子类,通过这个子类来与JS交互,但是在Manager中无法创建这个子类。(我刚刚接手这个项目,之前没有做过react-native)有些地方理解的可能不对,请指教。


  • @Likarl 说:

    Manager

    为什么你需要一个Module? Manager就可以与js交互了啊



  • 你是指通过“事件”来进行交互?但是需求中的点击事件不是在原生UI中触发的,所以没有办法触发“事件”。而文档中的原生模块Module可以提供@reactMethod 与 回调方法 给JS使用。



  • @Likarl js 也可以发送事件到native啊 通过事件的发送/接收进行交互啊原生组件-事件


登录后回复