当前位置 : 主页 > 网页制作 > React >

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

来源:互联网 收集:自由互联 发布时间:2021-06-15
是否有一个API来调用Activity类的方法?我需要在我的应用程序上调用finish()但在文档中找不到任何相关内容. 更具体地说,当我按下特定的TouchableHighlight时,我希望从index.android.jsx中完成()
是否有一个API来调用Activity类的方法?我需要在我的应用程序上调用finish()但在文档中找不到任何相关内容.

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

[更新]

现在我正在从NativeModule中暴露一个finish()方法,但也许有更好的方法可以做到这一点.

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

我也没有看到内置的方法来执行此操作,使用NativeModule的方法也是我使用的方法.

但是,如果在构建ReactInstanceManager时调用setCurrentActivity,则可以从模块调用getCurrentActivity,而不是将其传递给ReactPackage和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();
网友评论