从 Activity class (React Native Android) 调用方法
Call methods from the Activity class (React Native Android)
是否有 api 从 Activity
class 调用方法?我需要在我的应用程序上调用 finish()
,但在文档中找不到任何相关内容。
更具体地说,当按下特定的 TouchableHighlight
时,我想 finish()
来自我的 index.android.jsx 的 MainActivity
。
[更新]
现在我从我的 NativeModule 公开一个 finish()
方法,但也许有更好的方法来做到这一点。
我也没有看到执行此操作的内置方法,我也使用您使用 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
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();
是否有 api 从 Activity
class 调用方法?我需要在我的应用程序上调用 finish()
,但在文档中找不到任何相关内容。
更具体地说,当按下特定的 TouchableHighlight
时,我想 finish()
来自我的 index.android.jsx 的 MainActivity
。
[更新]
现在我从我的 NativeModule 公开一个 finish()
方法,但也许有更好的方法来做到这一点。
我也没有看到执行此操作的内置方法,我也使用您使用 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
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();