是否有一个API来调用Activity类的方法?我需要在我的应用程序上调用finish()但在文档中找不到任何相关内容. 更具体地说,当我按下特定的TouchableHighlight时,我希望从index.android.jsx中完成()
更具体地说,当我按下特定的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();