簡體   English   中英

如何從第三個子活動中調用父活動

[英]How can I call a parent activity from a third subactivity

我目前正在添加cordova插件來啟動我自己的自定義相機應用程序。 我也包括Aviary來做一些照片編輯。 現在我最大的問題是我不知道如何從活動(3)返回到活動(1),在這里我需要能夠訪問和調用:

this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));

我搜索了許多關於stackoverflow的帖子和許多博客。 我已經按照對流返回父級活動的方式進行了觀察,但是從A-> B-> C-> A那里我看不到任何對流。我的當前代碼發布在下面。 目前,我可以從鳥舍->轉到第二個活動(攝像機預覽),但是我對為什么不能再進一步上升感到困惑。

不可能必須走那么遠嗎?
是否不可能僅添加finish(); 盡可能遠地上升?

根據cordova文檔,我的execute方法位於Activity 1中:

(1)科爾多瓦插件

public class Aviary extends CordovaPlugin{

    public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
            this.callbackContext = callbackContext;

            Intent i = new Intent(cordova.getActivity(), CameraActivity.class);
            this.cordova.startActivityForResult((CordovaPlugin) this, i, (CAMERA + 1) * 16 + returnType + 1);


    public void onActivityResult(int requestCode, int resultCode, Intent intent) {
        logger.i("ACTIVITYRESULT - returned from cameraActivity, now in aviary");

        if (resultCode == Activity.RESULT_OK && requestCode == CameraConstants.FROM_CAMERA_TO_EXECUTE)
            // I need this to launch with the uri data contained within the intent
            //build json array here
            this.callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, result));

然后,我的第二個活動是從攝像機預覽開始。 捕獲圖像后,我將使用捕獲的位圖啟動一項活動,並將其顯示在屏幕上,並帶有發布圖像或使用鳥舍進行編輯的選項。

(2)CameraActivity:啟動捕獲后屏幕

Intent intent = new Intent(context, PostCaptureActivity.class);
intent.putExtra(CameraConstants.URI, path);
intent.putExtra("requestCode", CameraConstants.FROM_SAVEIMAGETASK_TO_POSTCAPTURE);
intent.putExtra(CameraConstants.SOURCE, CameraConstants.SOURCE_CAMERA);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivityForResult(intent, CameraConstants.FROM_SAVEIMAGETASK_TO_POSTCAPTURE);

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if (requestCode == CameraConstants.FROM_POSTCAPTURE_TO_PREVIEW)
    {
        logger.i("ACTIVITYTHREAD - inCameraActivity about to call finish");
        Intent intent= new Intent();
        setResult(RESULT_OK, intent);
        //intent.putExtra("uri", data.getData());
        intent.putExtra("requestCode", CameraConstants.FROM_CAMERA_TO_EXECUTE);
        finish();
    }

活動3:PostCaptureActivity(發射鳥舍)

private void setupAviaryIntent() {
    logger.i("Launching Aviary");
    Intent intent = new Intent(PostCaptureActivity.this, FeatherActivity.class);
    intent.setData(Uri.parse(uri));
    intent.putExtra("requestCode", CameraConstants.LAUNCH_AVIARY);
    intent.putExtra( "output-quality", 100 );
    intent.putExtra( "output-format", Bitmap.CompressFormat.JPEG.name() );
    intent.putExtra( "effect-enable-fast-preview", true );
    intent.putExtra("tools-list", new String[]{"CROP", "EFFECTS", "ADJUST", "ENHANCE",
            "DRAWING", "TEXT", "SHARPNESS", "BRIGHTNESS", "CONTRAST",
            "BLEMISH", "SATURATION", "RED_EYE", "WHITEN", "COLORTEMP"});
    startActivityForResult(intent, CameraConstants.LAUNCH_AVIARY);
}


@Override
public void onActivityResult( int requestCode, int resultCode, Intent data )
{
    super.onActivityResult(requestCode, resultCode, data);
    /** FROM: Aviary TO: Preview*/
    if(resultCode == RESULT_OK && requestCode == CameraConstants.LAUNCH_AVIARY )
    {
        logger.i("in PostCaptureActivity, should go back to CameraActivity");
        Uri uri = data.getData();
        Intent intent = new Intent();
        setResult(RESULT_OK, intent);
        intent.putExtra("requestCode", CameraConstants.FROM_POSTCAPTURE_TO_PREVIEW);
        intent.putExtra("uri", uri);
        finish();
    }
}

我正在尋找的是從活動3返回到父活動(1)的方式,或者是如何跳回活動1並能夠使用我的圖片信息運行sendPluginResult方法的一些示例。

編輯:所以事實證明,在finish()之后我無法返回上一個活動的原因; 是因為我在意圖之一中添加了標志。 重新閱讀文檔后,我意識到了錯誤所在。 刪除此行后,我能夠按預期進行所有操作。

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

在第二項活動中使用NO HISTORY標志。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM