requestCode中的Activity返回“0”

时间:2013-03-11 17:33:26

标签: android android-intent

我不知道我哪里错了。这可能是一个微不足道的错误,但我无法弄明白。

形成我的第一个活动我正在为结果开始另一个活动:

Intent ccard_intent= new Intent(this, create_ccard.class);
startActivityForResult(ccard_intent,start_activity_for_ccard);  

在新的Activity中,我使用:

返回
Intent i = new Intent();
i.putExtra("card_name", Card_name);
setResult(create_ccard.RESULT_OK);
finish();

在我的第一个活动的onActivityResult中:

  protected void onActvityResult(int requestCode, int resultCode, Intent data){

   super.onActivityResult(requestCode, resultCode, data);

    this.requestCode=requestCode;


    Toast.makeText(getBaseContext(), "resume working switch case error" + requestcode, Toast.LENGTH_LONG).show();


   if(resultCode==RESULT_CANCELED){

    flag=0;
   }
}

我在requestCode的地方收到error0? 为什么?? 哪里出错了? 它应该是788,因为我正在使用它,同时打开活动。

三江源!

2 个答案:

答案 0 :(得分:2)

你的行

startActivityForResult(ccard_intent,start_activity_for_ccard); 

实际决定了你在

中获得的价值
this.requestCode=requestCode;

请参阅文档here

查看您的Toast代码

Toast.makeText(getBaseContext(), "resume working switch case error" + requestcode, Toast.LENGTH_LONG).show();

我最好的猜测是,因为您正在更改案例(使用requestcode而不是requestCode),因此Toast打印出错误的值

另外(经过冗长的讨论):你的方法签名是错误的。它读取

protected void onActvityResult(int requestCode, int resultCode, Intent data)

应该是

protected void onActivityResult(int requestCode, int resultCode, Intent data)

相当简洁地解释了为什么你的requestCode从未将其值从0更改为

答案 1 :(得分:0)

更改

setResult(create_ccard.RESULT_OK);  

setResult(RESULT_OK);