【发布时间】:2017-01-29 21:39:39
【问题描述】:
如何在 MainApplication 中获取和注入 Activity?我有一个外部库,要求我将活动作为参数传递。这个answer 建议我在需要当前活动的部分中使用 getCurrentActivity() 方法,但它已从 ReactContextBaseJavaModule 类中删除。有没有其他方法可以做到这一点?如何传递以下代码中使用“this”关键字的活动?谢谢..
package com.bluetoothioexample;
import android.app.Application;
import android.util.Log;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.ReactApplication;
import com.facebook.react.ReactInstanceManager;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.react.shell.MainReactPackage;
import java.util.Arrays;
import java.util.List;
import com.subsite.bluetoothio.BluetoothIOPackage;
import com.oblador.vectoricons.VectorIconsPackage;
public class MainApplication extends Application implements ReactApplication {
private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
@Override
protected boolean getUseDeveloperSupport() {
return BuildConfig.DEBUG;
}
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
new MainReactPackage(),
new BluetoothIOPackage(this), //<- How pass the activity
// from ReactApplication ?
new VectorIconsPackage()
);
}
};
@Override
public ReactNativeHost getReactNativeHost() {
return mReactNativeHost;
}
}
【问题讨论】:
-
如果你需要这个,你的代码架构错误。 Application 类不应该知道任何具有 Activity 范围或更小的内容。 Application 类应该只知道存在于 Application 范围内的事物。
-
我正在使用一个外部库,它的结构就是这样使用的......
-
不,你不是。没有理由 ReactApplication 类必须是实际的 Application 类。
-
好吧,我遵循 react-native 文档提供的结构。你会怎么做? ..如果你能提供一些你将如何实施这个作为这个问题的答案,我会很高兴。谢谢..
标签: android react-native react-native-android