无法回到OnActivityResult

时间:2016-09-08 04:11:47

标签: android onactivityresult

嘿伙计们,我想在之前的活动中回到onActivityResult

这是我的代码

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

中的上一个活动
 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没有抓住我的结果代码

你可以告诉我哪里错了吗?

THX

5 个答案:

答案 0 :(得分:1)

要使用意图调用第二个活动,请使用

  

startActivityForResult(I)

而不是

  

startActivity(I)

不要使用

  

i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

除非您知道使用它的后果以及在onActivityResult中使用

的意图
  

数据

变量作为

中的参数传递
  

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);
    }

}

答案 1 :(得分:0)

它的发生是因为您从不同的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);
    }
}

Sohuld是这样的。

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);
    }
}

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

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

编辑:确保您使用StartActivityForResult();来调用活动。

我希望这会帮助你。

答案 2 :(得分:0)

您使用的代码用于捕获结果是错误的,您应该使用以下内容:

key->value

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

总是有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); } }

希望这能帮到你

答案 3 :(得分:0)

你的问题不明确。 您应该更清楚地描述您的案例:

  1. OnActivityResult未被调用。
  2. OnActivityResult被调用,但resultCode不是1000。
  3. OnActivityResult被调用,resultCode = 1000,但您无法获得额外数据。
  4. 对于2个首例,请确保您致电startActivityForResult()

    对于第三种情况,请删除此行Intent ii = getIntent();并使用Intent作为onActivityResult的输入参数。

答案 4 :(得分:0)

最后它解决了,

只使用statActivityForResult()

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