0
Android用のネイティブモジュールを作成したいのですが、モジュールのメソッドにアクセスできません。 "Undefined is not object"というエラーがスローされます。私のコードで何が間違っていますか?React Native Android Moduleのメソッドを使用できません
この場合、ボタンを押したときに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