无法将java代码集成到我的react本机项目-错误:不兼容的类型:ReactApplicationContext无法转换为活动
我正在尝试将java代码与我的react本机项目连接起来 我的流程是这样的——当用户在react native中单击我的支付按钮时,它将路由到一个用java编写的页面(这是一个支付网关),然后当用户完成支付过程时,它将路由回react native中的初始页面。 我得到的错误如下:无法将java代码集成到我的react本机项目-错误:不兼容的类型:ReactApplicationContext无法转换为活动,java,android,reactjs,react-native,java-bridge-method,Java,Android,Reactjs,React Native,Java Bridge Method,我正在尝试将java代码与我的react本机项目连接起来 我的流程是这样的——当用户在react native中单击我的支付按钮时,它将路由到一个用java编写的页面(这是一个支付网关),然后当用户完成支付过程时,它将路由回react native中的初始页面。 我得到的错误如下: HelloWorldModule.java:56: error: incompatible types: ReactApplicationContext cannot be converted to Acti
HelloWorldModule.java:56: error: incompatible types: ReactApplicationContext cannot be converted
to Activity
new RavePayManager((Activity)reactContext).setAmount(Double.parseDouble(String.valueOf(amount)))
请看下面我的代码:
//响应本机代码以连接到java
// We are importing the native Java module here
import {NativeModules} from 'react-native';
var HelloWorld = NativeModules.HelloWorld;
// type Props = {};
export default class App extends Component {
// async function to call the Java native method
async sayHiFromJava() {
HelloWorld.sayHi( (err) => {console.log(err)}, (msg) => {console.log(msg)} );
}
render() {
return (
<View style={styles.container}>
<TouchableOpacity onPress={ this.sayHiFromJava }>
<Text>Invoke native Java code</Text>
</TouchableOpacity>
</View>
);
}
}
//HelloWorldPackage.java
package com.packagename;
import com.facebook.react.ReactPackage;
import android.content.Context;
import com.facebook.react.bridge.NativeModule;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.uimanager.ViewManager;
import com.visioncapitaleye.HelloWorldModule;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class HelloWorldPackage implements ReactPackage {
Context context;
HelloWorldPackage(Context context) {
this.context = context;
}
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Collections.emptyList();
}
@Override
public List<NativeModule> createNativeModules(
ReactApplicationContext reactContext) {
List<NativeModule> modules = new ArrayList<>();
//this is where you register the module
modules.add(new HelloWorldModule(reactContext,context)); // added HelloWorldModule
return modules;
}
}
package com.packagename;
导入com.facebook.react.ReactPackage;
导入android.content.Context;
导入com.facebook.react.bridge.NativeModule;
导入com.facebook.react.bridge.ReactApplicationContext;
导入com.facebook.react.uimanager.ViewManager;
导入com.visioncapitaleye.HelloWorldModule;
导入java.util.ArrayList;
导入java.util.Collections;
导入java.util.List;
公共类HelloWorldPackage实现了ReactPackage{
语境;
HelloWorldPackage(上下文){
this.context=上下文;
}
@凌驾
公共列表CreateViewManager(ReactApplicationContext reactContext){
返回集合。emptyList();
}
@凌驾
公共列表createNativeModules(
ReactApplicationContext(反应上下文){
列表模块=新的ArrayList();
//这是您注册模块的地方
modules.add(新的HelloWorldModule(reactContext,context));//添加了HelloWorldModule
返回模块;
}
}
我是java新手,似乎不知道自己做错了什么。
请协助。我在尝试将sdk集成到现有react本机项目时遇到类似问题。尝试以下方法,看看它是否适合您。不要将reactContext强制转换为活动,只需获取当前活动并使用它即可
final Activity activity = getCurrentActivity();
我在尝试将sdk集成到现有react本机项目时遇到了类似的问题。尝试以下方法,看看它是否适合您。不要将reactContext强制转换为活动,只需获取当前活动并使用它即可
final Activity activity = getCurrentActivity();
从新RavePayManager(reactContext)中删除(活动)。setAmount(…)这不起作用。错误消息-HelloWorldModule.java:56:错误:未找到RavePayManager(ReactApplicationContext)RavePayManager(reactContext)。setAmount(Double.parseDouble(String.valueOf(amount))的合适构造函数构造函数RavePayManager.RavePayManager(活动)不适用(参数不匹配;ReactApplicationContext无法转换为活动)从新RavePayManager(reactContext)中删除(活动)。setAmount(…)这不起作用。错误消息-HelloWorldModule.java:56:错误:找不到适合RavePayManager的构造函数(ReactApplicationContext)RavePayManager(reactContext).setAmount(Double.parseDouble(String.valueOf(amount)))构造函数RavePayManager.RavePayManager(活动)不适用(参数不匹配;ReactApplicationContext无法转换为活动)
final Activity activity = getCurrentActivity();