【问题标题】:Android: app not returning correctly from intentAndroid:应用程序未从意图正确返回
【发布时间】:2017-06-16 07:20:12
【问题描述】:

我有一个活动,当点击 ImageView 时,它将打开第二个活动以选择和裁剪图像。

此过程运行良好。在第二个activity中,当用户对图片满意时,会点击DONE按钮返回上一个activity,裁剪后的图片会显示在点击的ImageView中。

问题:从第二个活动返回后,第一个活动不再显示......在我的真实设备中,如果我尝试检查打开的 Android 菜单,它会返回启动 Android 菜单应用程序,我的应用程序在那里,但即使我再次点击它,它也不会进入第一个活动......似乎它再次重复选择和裁剪图像的过程......奇怪:S

这是我用来从一个活动转移到另一个活动的相关代码:

关于我的第一个活动:

public void onImageViewClicked(View v){

        this.clickedImageView = (ImageView) v;
        Intent intent = new Intent(this, CropImages.class);
        switch (v.getId()){
            case R.id.imgvW_1:
                startActivityForResult(intent, 1111);
                break;
            case R.id.imgvW_2:
                startActivityForResult(intent, 2222);
                break;
            case R.id.imgvW_3:
                startActivityForResult(intent, 3333);
                break;
        }

    }

结果应该在这里:

@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (resultCode == RESULT_OK){    
            if (requestCode == 1111){
                Bitmap b = (Bitmap) data.getParcelableExtra("Image");
                img_encoded_1 = Utilities.encode64Bitmap(b);
                clickedImageView.setImageBitmap(b);


            }

        }
    }

第二个活动(CropImages.java)做了很多事情......但应该像这样结束:

public void onDoneClicked(View v){
        // cropped Bitmap stored in cropped
        Intent returnIntent = getIntent();
        returnIntent.putExtra("Image", cropped);
        setResult(RESULT_OK, returnIntent);
        finish();
    }

任何线索为什么第一个活动消失并且真实设备只显示欢迎/主 Android 屏幕??

如果这有帮助:第二个活动也会启动一个意图,用于从 GalleryCamera 中选择图像....不过我认为这并不重要....

如果这有帮助...似乎第一个活动上的onActivityResult 永远不会执行...该方法上的TOAST 永远不会显示。

【问题讨论】:

  • 您可能点击了 Debug 'app' 而不是 Run 'app'
  • 是我的错,忽略上次编辑...我删除...
  • 好的,现在可以了吗?
  • 不....同样的情况,关闭第二个活动后...回到“Android桌面”...你知道我的意思
  • 上传完整代码,包括清单

标签: android android-intent


【解决方案1】:

这可能是问题所在,请在您的第一个活动中更改以下内容。

Intent intent = new Intent({First Acticity name here}.this, CropImages.class);

【讨论】:

  • 谢谢哥们,但thisfirst activity name 不一样???,但是,我试过了,它不起作用.....结果一样
  • 我觉得如果使用this,需要在manifest中指定parentActivityname——Documentation
【解决方案2】:

更改以下代码

public void onDoneClicked(View v){
    // cropped Bitmap stored in cropped
    Intent returnIntent = getIntent();
    returnIntent.putExtra("Image", cropped);
    setResult(RESULT_OK, returnIntent);
    finish();
}

public void onDoneClicked(View v){
    // cropped Bitmap stored in cropped
    Intent returnIntent = new Intent();  ;
    returnIntent.putExtra("Image", cropped);
    setResult(RESULT_OK, returnIntent);
    finish();
}

供您参考

https://www.javatpoint.com/android-startactivityforresult-example

【讨论】:

  • 谢谢,但恐怕这不是问题,它仍然给出相同的行为
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-07
  • 2020-03-02
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 2018-06-12
  • 1970-01-01
相关资源
最近更新 更多