2015-10-26 42 views
4

是否有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我有同樣的問題 –

回答

1

我沒有看到一個內置的方式做這一點,並使用你的方法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代碼打開反應原生組件 –

相關問題