React Native 与 嵌入Android原生与Activity页面互相跳转,程序人生
在React Native与嵌入Android原生Activity页面之间进行跳转和数据传递,可以通过自定义React Package和原生模块来实现。以下是实现这一功能的基本步骤和示例代码:
- 创建一个自定义React Package:
public class MyReactPackage implements ReactPackage {
@Override
public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
modules.add(new MyNativeModule(reactContext));
return modules;
}
@Override
public List<Class<? extends JavaScriptModule>> createJSModules() {
return Collections.emptyList();
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
}
- 创建原生模块以处理跳转:
public class MyNativeModule extends ReactContextBaseJavaModule {
private ReactContext mContext;
MyNativeModule(ReactApplicationContext context) {
super(context);
mContext = context;
}
@Override
public String getName() {
return "MyNativeModule";
}
@ReactMethod
public void startActivity(String activityName) {
Activity currentActivity = mContext.getCurrentActivity();
if (currentActivity != null) {
Intent intent = new Intent(currentActivity, Class.forName(activityName));
currentActivity.startActivity(intent);
}
}
}
- 注册自定义Package:
在MainApplication.java
文件中的getPackages()
方法中添加:
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new MyReactPackage() // 注册自定义Package
);
}
- 在React Native中使用:
import { NativeModules } from 'react-native';
NativeModules.MyNativeModule.startActivity('com.example.MyActivity');
确保替换com.example.MyActivity
为你想要跳转的Activity的完整类名。
这样,你就可以从React Native调用原生模块提供的方法来启动任何Activity页面,并在Activity中通过React Native提供的桥接回调与React Native页面进行交互。
评论已关闭