来自Activity类的调用方法(React Native Android)

问题描述:

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

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

[更新]

现在我是从我的NativeModule暴露finish()方法,但也许有更好的方法来做到这一点。

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

+0

您可以在活动类中调用finish()以销毁活动。你在问什么? –

+0

不,我想从我的index.android.jsx上的React Native组件调用它。 – felipebueno

+0

您是否发现此解决方案为@buenoFelipe我有同样的问题 –

我没有看到一个内置的方式做这一点,并使用你的方法NativeModule是我用为好。

但是,如果你打电话setCurrentActivity构建ReactInstanceManager时,那么你可以调用从模块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

公共类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(); 
+0

嘿,谢谢你,@mpkuth。不幸的是(幸运的是),我不再使用React Native,但我相信你的答案对其他人有用。 – felipebueno

+0

我必须为完成方法 –

+0

hello @mpkuth使用不同的名称,您能否帮助我找到一个想法我该如何做相反的事情,我的意思是,我想从本机java代码打开反应原生组件 –