0
我想爲Android創建反應本機模塊,但無法訪問模塊的方法。它會拋出錯誤「未定義不是對象」。我的代碼有什麼問題?無法使用我的React Native Android模塊中的方法
在這種情況下,我想在按下按鈕時調用foo()方法。
我的代碼是介紹如下:
TestModule.java
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;
}
}
MyApplication.java
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);
}
}
index.android.js
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>
);
}
}
確保清理並重建gradle項目,您的代碼看起來很好 –
如何清理gradle項目?我擦除了什麼? – user3348949