不能回到 OnActivityResult

cant back to OnActivityResult

大家好,我想回到之前的 onActivityResult activity

这是我的代码

public void onClick(DialogInterface dialog, int id) {
                            Intent i = new Intent(DetailPhotoMedical.this, MedicalClaim.class);
                            Bundle extras = new Bundle();
                           // i.putExtra("photo", "");
                            extras.putString("photo","");
                            extras.putString("photoNo",photoNo);
                            i.putExtras(extras);
                            setResult(1000, i);
                            finish();
                        }

我想在 onActivityResult

中返回上一个 activity
 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(resultCode==1000)
    {
        Intent ii = getIntent();
        Bundle extras = ii.getExtras();
        photoFromDetail = extras.getString("photo");
        photoNo = extras.getString("photoNo");
        if (photoNo=="photo1")
        {
            strPhoto1="";
            ivAttachment1.setImageResource(R.drawable.ic_menu_camera);
        }

    }

这是第二个活动的代码

Intent i = new Intent(MedicalClaim.this, DetailPhotoMedical.class);

               /* i.putExtra("photo", strPhoto1);*/
                Bundle extras = new Bundle();
                extras.putString("photo", strPhoto1);
                extras.putString("photoNo","photo1");
                i.putExtras(extras);
                i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                startActivity(i);

但是 OnActivityResult 没有捕捉到我的结果代码

你能告诉我哪里错了吗?

感谢

发生这种情况是因为您从不同的 Intent.

获取数据

这个,

if(resultCode==100){
    Intent ii = getIntent();
    Bundle extras = ii.getExtras();
    photoFromDetail = extras.getString("photo");
    photoNo = extras.getString("photoNo");
    if (photoNo=="photo1") {
        strPhoto1="";
        ivAttachment1.setImageResource(R.drawable.ic_menu_camera);
    }
}

应该是这样的

if(resultCode==100){

    Bundle extras = data.getExtras();
    photoFromDetail = extras.getString("photo");
    photoNo = extras.getString("photoNo");
    if (photoNo=="photo1") {
        strPhoto1="";
        ivAttachment1.setImageResource(R.drawable.ic_menu_camera);
    }
}

您可以在 onResultActivity 的参数中给出的意图中看到 data

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

编辑: 确保您使用 StartActivityForResult(); 调用 Activity。

希望对您有所帮助。

您用于捕获结果的代码是错误的,您应该使用这样的代码:

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

    if(resultCode == Activity.RESULT_OK) //Here is where you need to do the change
    {
        Intent ii = getIntent();
        Bundle extras = ii.getExtras();
        photoFromDetail = extras.getString("photo");
        photoNo = extras.getString("photoNo");
        if (photoNo=="photo1")
        {
            strPhoto1="";
            ivAttachment1.setImageResource(R.drawable.ic_menu_camera);
        }

    }

因为你比较了一个错误的参数,你的 if

中总是有 false

希望对您有所帮助

你的问题不清楚。 你应该更清楚地描述你的情况:

  1. OnActivityResult 未调用。
  2. OnActivityResult 被调用,但 resultCode 不是 1000。
  3. OnActivityResult 被调用,resultCode = 1000 但是你不能得到额外的数据。

对于前 2 个案例,请确保您拨打了 startActivityForResult()

对于第三种情况,请删除此行 Intent ii = getIntent(); 并使用 Intent 这是 onActivityResult.

的输入参数

要使用 Intent 调用第二个 activity,请使用

startActivityForResult(i)

而不是

startActivity(i)

不要使用

i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

除非您知道使用它的后果以及在 onActivityResult 中获得意图,否则请使用

data

中作为参数传递的变量

onActivityResult(requestCode, resultCode, data)

像这样

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

if(resultCode==1000)
{
    Bundle extras = data.getExtras();
    photoFromDetail = extras.getString("photo");
    photoNo = extras.getString("photoNo");
    if (photoNo=="photo1")
    {
        strPhoto1="";
        ivAttachment1.setImageResource(R.drawable.ic_menu_camera);
    }

}

终于解决了,

仅使用 statActivityForResult()

并删除 i.getintet 并使用 data.getExtras