Hello,
I'm trying to create a native UI component in Android. I believe I've followed the docs exactly, however the docs do not have an example of the ReactImageView which is the class that the view manager serves. I'm simply trying to display an Android TextView in RN. Once I get that to work I will move on to implementing my own class (so I don't strictly need TextView to work. The result of running this project is that literally nothing happens. It fails silently, and I don't see my "hello from android !" text appear on the screen and I don't know how to check if RN is even calling my Java code.
RCTScannerViewManager.java
publicclassRCTScannerViewManagerextendsSimpleViewManager<TextView> {
publicstaticfinalStringREACT_CLASS = "RCTScannerView";
@OverridepublicStringgetName() {
returnREACT_CLASS;
}
@OverrideprotectedTextViewcreateViewInstance(ThemedReactContextreactContext) {
TextViewtv = newTextView(reactContext);
tv.setText("hello from android !");
returntv;
}
}RCTScannerViewPackage.java
publicclassRCTScannerViewPackageimplementsReactPackage {
@OverridepublicList<NativeModule> createNativeModules(ReactApplicationContextreactContext) {
returnCollections.emptyList();
}
@OverridepublicList<Class<? extendsJavaScriptModule>> createJSModules() {
returnCollections.emptyList();
}
@OverridepublicList<ViewManager> createViewManagers(ReactApplicationContextreactContext) {
returnArrays.<ViewManager> asList(
newRCTScannerViewManager()
);
}
}MainApplication.java
publicclassMainApplicationextendsApplicationimplementsReactApplication {
privatefinalReactNativeHostmReactNativeHost = newReactNativeHost(this) {
@OverridepublicbooleangetUseDeveloperSupport() {
returnBuildConfig.DEBUG;
}
@OverrideprotectedList<ReactPackage> getPackages() {
returnArrays.<ReactPackage>asList(
newMainReactPackage(),
newRCTScannerViewPackage()
);
}
};
@OverridepublicReactNativeHostgetReactNativeHost() {
returnmReactNativeHost;
}
@OverridepublicvoidonCreate() {
super.onCreate();
SoLoader.init(this, /* native exopackage */false);
}
}ScannerView.js
importReact,{Component,PropTypes}from'react'import{Text,View,requireNativeComponent}from'react-native'variface={name: 'RCTScannerView',propTypes: {
...View.propTypes}}module.exports=requireNativeComponent('RCTScannerView',iface);index.android.js
importReact,{Component}from'react'import{AppRegistry,Text,View}from'react-native';importScannerViewfrom'./ScannerView';classAwesomeProjectextendsComponent{render(){return(<View><Text> Hello world @@ </Text><ScannerViewtest="hello world"></ScannerView></View>);}}AppRegistry.registerComponent('AwesomeProject',()=>AwesomeProject)I would love to use RN in my project, but there seems to be a lack of documentation online about how to create native modules in Android. I have posted this issue on Stack Overflow, but no one has responded.
Hello,
I'm trying to create a native UI component in Android. I believe I've followed the docs exactly, however the docs do not have an example of the
ReactImageViewwhich is the class that the view manager serves. I'm simply trying to display an AndroidTextViewin RN. Once I get that to work I will move on to implementing my own class (so I don't strictly needTextViewto work. The result of running this project is that literally nothing happens. It fails silently, and I don't see my"hello from android !"text appear on the screen and I don't know how to check if RN is even calling my Java code.RCTScannerViewManager.java
RCTScannerViewPackage.java
MainApplication.java
ScannerView.js
index.android.js
I would love to use RN in my project, but there seems to be a lack of documentation online about how to create native modules in Android. I have posted this issue on Stack Overflow, but no one has responded.