2014-09-24 105 views
1

我目前正在添加一个科尔多瓦插件来启动我自己的自定义相机应用程序。我还包括Aviary做一些照片编辑。现在我最大的问题是我不知道如何从活动返回(3)回活动(1),我需要能够访问和调用:如何从第三个子活动调用父活动

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

我已经通过计算器上的很多职位搜索和许多博客。我遵循了我见过的用于回到父母活动的对流,但是我没有看到从A→B→C→A的任何地方。我现在的代码在下面发布。目前我能够从Aviary上去 - >到我的第二个活动(相机预览),但是我为什么不能进一步上升到一个级别。

难道不可能走上那么远吗?
是不是可以添加完成();要尽可能早地回到你想要的位置?

我的执行方法根据科尔多瓦文档驻留在活动1:

(1)CordovaPlugin

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:启动postcapture屏幕

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)或者我如何跳回到活动的一些例子,并且能够用我的图片信息运行sendPluginResult方法。

编辑: 因此,事实证明,我无法在完成()后返回到上一个活动的原因;是因为我在其中一个意图中添加了国旗。重读文档后,我意识到错误是什么。删除这条线后,我能够按预期工作。

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 

回答

0

没有历史标志在你的第二个活动。

+0

这在技术上回答了关于从活动3返回到1的问题。谢谢! – ViciDroid 2014-09-25 15:35:30

0

像下面设置标志,这将清除活动Activity3和活性1

使用之间
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP 
       | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
相关问题