``在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('成功调用原生方法');
}``
网友评论