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

6

你可以在Activity类中调用finish()方法以销毁该Activity。这是你所询问的内容吗? - Neria Nachum
不,我想从我的index.android.jsx的React Native组件中调用它。 - felipebueno
你找到解决方案了吗,@buenoFelipe?我也遇到了同样的问题。 - Sahir Saiyed
1
如果你只是想要finish() React Native Activity,那么你可以从react-native导入BackAndroid,然后使用BackAndroid.exitApp() - Joshua Pinter
1个回答

2
我也没有看到内置的方法来实现这一点,您使用NativeModule的方法也是我所使用的方法。
但是,如果在构建ReactInstanceManager时调用setCurrentActivity,那么您可以从模块中调用getCurrentActivity,而不是通过ReactPackageReactModule构造函数传递它。 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

public class 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();

嘿,谢谢你,@mpkuth。不幸的是(幸运的是?),我不再使用React Native了,但我相信你的答案对其他人会有用。 - felipebueno
我不得不为完成方法使用另一个名称。 - Elhanan Mishraky
你好 @mpkuth,能否帮我想一个办法如何实现相反的操作?我的意思是,我想从 Native Java 代码中打开一个 React Native 组件。 - Mostafiz Rahman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接