从Activity类调用方法(React Native Android)

时间:2015-10-26 18:00:23

标签: android react-native react-jsx

是否有api来调用Activity类的方法?我需要在我的应用上拨打finish(),但无法在文档中找到任何相关内容。

更具体地说,当我按下特定的finish()时,我想从我的index.android.jsx中MainActivity TouchableHighlight

[更新]

现在我从NativeModule中暴露了finish()方法,但也许有更好的方法。

https://github.com/sneerteam/react-native-sneer/blob/master/src/main/java/me/sneer/react/SneerModule.java#L84

1 个答案:

答案 0 :(得分:1)

我也没有看到内置方式来执行此操作,并且使用Transparent的方法也是我使用的方法。

但是,如果您在构建NativeModule时致电setCurrentActivity,那么您可以从模块中致电ReactInstanceManager,而不是通过getCurrentActivityReactPackage传递ReactModule构造

<强> MyReactModule.java

public class MyReactModule extends ReactContextBaseJavaModule {

    public MyReactModule(ReactApplicationContext reactContext) {
        super(reactContext);
    }

    @Override
    public String getName() {
        return getClass().getSimpleName();
    }

    @ReactMethod
    public void finish() {
        Activity activity = getCurrentActivity();
        if (activity != null) {
            activity.finish();
        }
    }

}

<强> MyReactPackage.java

公共类MyReactPackage实现ReactPackage {

    @Override
    public List<Class<? extends JavaScriptModule>> createJSModules() {
        return Collections.emptyList();
    }

    @Override
    public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
        return Collections.emptyList();
    }

    @Override
    public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) {
        List<NativeModule> modules = new ArrayList<>();
        modules.add(new MyReactModule(reactContext));
        return modules;
    }

}

ReactInstanceManager设置

mReactInstanceManager = ReactInstanceManager.builder()
        .addPackage(new MyReactPackage())
        .setCurrentActivity(this)
        // other settings
        .build();