美文网首页
ReactNative和安卓的相互调用

ReactNative和安卓的相互调用

作者: 卖梦为生_若愚 | 来源:发表于2017-06-22 15:17 被阅读0次

    ``在reactnative里面调用原生方法:

    1、创建一个moudle,定义好需要在js里面调用的方法

    public classBridgeextendsReactContextBaseJavaModule {

    privateContextmContext;

    publicBridge(ReactApplicationContext reactContext) {

    super(reactContext);

    mContext= reactContext;

    }

    @Override

    publicString getName() {

    return "Bridge";//这里返回的必须是当前类的类名

    }

    /**

    * 必须添加反射注解不然会报错

    * 这个方法就是ReactNative将要调用的方法,会通过此类名字调用

    *@parammsg

    */

    @ReactMethod

    public voidCallNativeMethod(String msg) {

    Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show();

    }

    }

    2、创建一个自己的包,把创建的moudle添加进来

    public classMyReactPackageimplementsReactPackage {

    @Override

    publicList createNativeModules(ReactApplicationContext reactContext) {

    List modules =newArrayList<>();

    modules.add(newBridge(reactContext));

    returnmodules;

    }

    @Override

    publicList> createJSModules() {

    returnCollections.emptyList();

    }

    @Override

    publicList createViewManagers(ReactApplicationContext reactContext) {

    returnCollections.emptyList();

    }

    }

    3、添加新创建的包

    mReactInstanceManager= ReactInstanceManager.builder()

    .setApplication(getApplication())

    .setBundleAssetName("index.android.bundle")

    .setJSMainModuleName("index.android")

    .addPackage(newMainReactPackage())

    .addPackage(newMyReactPackage())

    .setUseDeveloperSupport(BuildConfig.DEBUG)

    .setInitialLifecycleState(LifecycleState.RESUMED)

    .build();

    4、在js里面调用

    onClick() {

    NativeModules.Bridge(moudle的名字).CallNativeMethod('成功调用原生方法');

    }``

    相关文章

      网友评论

          本文标题:ReactNative和安卓的相互调用

          本文链接:https://www.haomeiwen.com/subject/bfsfcxtx.html