在为React-Native

时间:2016-10-12 20:23:59

标签: java android react-native react-native-android

First of all, here is a test repo to replicate my issue

你好, 我正在尝试为React-Native创建一个简单的Android模块,而我在从Java代码获取当前Activity时遇到了一些麻烦。

这不是我工作的第一个本机模块,但从今天起我从未获得过活动参考。

interested module是Estimote SDK的桥梁,但这与问题无关 Android Studio中的模块运行良好,但是当我尝试使用react-native run android构建它时,我收到以下错误:

:react-native-estimote-android:compileReleaseJavaWithJavac
/Users/matteo/dev/react-native-example/react-native-estimote-android/android/src/main/java/com/mmazzarolo/estimoteandroid/EstimoteAndroidModule.java:64: error: cannot find symbol
        Activity currentActivity = this.getCurrentActivity();
                                       ^
  symbol: method getCurrentActivity()
1 error
:react-native-estimote-android:compileReleaseJavaWithJavac FAILED

FAILURE: Build failed with an exception.

根据我的理解,扩展 ReactContextBaseJavaModule 应该足以让我使用 this.getCurrentActivity()(并且Android工作室同意我的意见)。

这是我已经尝试过的事情:
- 当我尝试导入ActivityEventListener时,实现ActivityEventListener:相同的无法找到符号错误;

- android / .gradlew clean
- 守望者手表 - 所有&& rm -rf node_modules /&& npm cache clean&& npm prune&& npm i - 在两台不同的电脑上试过同样的回购......

任何提示? 提前谢谢。

2 个答案:

答案 0 :(得分:5)

问题在于模块'react-native-estimote-android'

react-native 的版本

只需将compile 'com.facebook.react:react-native:0.12.+'更改为 compile 'com.facebook.react:react-native:+'

这将解决无法找到getCurrentActivity的符号。

getCurrentActivity 方法在react-native 0.12版本中不可用。这就是为什么它会抛出错误。

答案 1 :(得分:1)

 @ReactMethod
public void start(final Callback callback) {
    Activity currentActivity = getCurrentActivity();
    this.mBeaconManager.connect(new BeaconManager.ServiceReadyCallback() {
        @Override
        public void onServiceReady() {
            mBeaconManager.startRanging(region);
            callback.invoke();
        }
    });
}

从start方法中删除它,如果你这样做.getCurrentActivity()它将引用EstimoteAndroidModule上下文而不是应用程序ReactContextBaseJavaModule上下文