ReactNative和安卓的相互调用

2017-06-22  本文已影响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('成功调用原生方法');

}``

上一篇下一篇

猜你喜欢

热点阅读