Javascript Can';不要使用我的React原生Android模块中的方法
我想为Android制作一个react本机模块,但我无法访问该模块的方法。它抛出错误“Undefined不是对象”。我的代码有什么问题 在本例中,我想在按下按钮时调用foo()方法 我的代码如下: TestModule.javaJavascript Can';不要使用我的React原生Android模块中的方法,javascript,java,android,module,react-native,Javascript,Java,Android,Module,React Native,我想为Android制作一个react本机模块,但我无法访问该模块的方法。它抛出错误“Undefined不是对象”。我的代码有什么问题 在本例中,我想在按下按钮时调用foo()方法 我的代码如下: TestModule.java public class TestModule extends ReactContextBaseJavaModule { public TestModule(ReactApplicationContext reactContext) { supe
public class TestModule extends ReactContextBaseJavaModule {
public TestModule(ReactApplicationContext reactContext) {
super(reactContext);
}
@Override
public String getName() {
return "TestModule";
}
@ReactMethod
public void foo(){
}
}
TestPackage.java
public class TestPackage implements ReactPackage{
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new TestModule(reactContext));
return modules;
}
@Override
public List<Class<? extends JavaScriptModule>> createJSModules() {
return null;
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return null;
}
}
public类TestPackage实现了ReactPackage{
@凌驾
公共列表createNativeModules(ReactApplicationContext reactContext){
列表模块=新的ArrayList();
modules.add(新的TestModule(reactContext));
返回模块;
}
@凌驾
公共列表我解决了它
在TestPackage.java文件中,createJSModules()
和createViewManagers()
方法应该返回Collections.emptyList()
而不是返回null
确保清理和重建gradle项目,您的代码看起来很好。我如何清理gradle项目?我是否删除了一些内容?
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
public boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new TestPackage(), //Added my TestPackage
new ToastPackage()
);
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
@Override
public void onCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */ false);
}
}
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
Button,
NativeModules,
} from 'react-native';
var toast = NativeModules.Toast;
var test = NativeModules.TestModule;
export default class RNModuleTest extends Component {
showToast(){
toast.show("Hello from toast", toast.LONG);
}
showTest(){
test.foo();
}
render() {
return (
<View style={styles.container}>
<Button title="Toast" onPress={this.showToast}/>
<Button title="testModule" onPress={this.showTest} />
</View>
);
}
}