android部分:
1、添加ExampleInterface
public class ExampleInterface extends ReactContextBaseJavaModule {//ReactContextBaseJavaModule继承
private Context mContext;
public ExampleInterface(ReactApplicationContext reactContext) {
super(reactContext);
mContext = getReactApplicationContext();
}
@Override
public String getName() {
return "ExampleInterface";//<---此处返回的很重要,需要跟js相对应
}
//js会调用
@ReactMethod
public void handleMessage(String msg) {
Toast.makeText(mContext,msg,1).show();
}
2、添加
AnExampleReactPackage 并且继承ReactPackage ,
把自定义的module添加到package中
public class AnExampleReactPackage implements ReactPackage {
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
List<NativeModule> nativeModules = new ArrayList<>();
nativeModules.add(new ExampleInterface(reactContext));
return nativeModules;
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
}
3、在MainApplication.java里面把nativeModules添加到list集合
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new AnExampleReactPackage()//添加到集合
);
}
ReactNative部分
4、添加相应的控件
import {
Platform,
StyleSheet,
Text,
View,
NativeModules,
ToastAndroid,
TouchableHighlight
} from 'react-native';
5、这边我也只是在里面添加了一个点击事件
export default class App extends Component<Props> {
render() {
return (
<View style={styles.container}>
<TouchableHighlight onPress={()=>NativeModules.ExampleInterface.handleMessage("点击ok")}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
</TouchableHighlight>
<Text style={styles.instructions}>
To get started, edit App.js
</Text>
<Text style={styles.instructions}>
{instructions}
</Text>
</View>
);
}
}
6、重新运行服务器并且安装
PS:第一次发表学习笔记,努力成为技术大神。