返回上一个有意图错误的活动

时间:2014-02-07 07:22:57

标签: android android-intent

我有两个活动,在第二个活动中,当我按下回车键时,它会得到一些价值并带回第一个活动。

这是我的代码:

第二项活动

//event on "ENTER" button
Intent i = new Intent();
i.putExtra("namaDokter", "kosong");
i.putExtra("idDokter", "kosong");
setResult(RESULT_OK, i);
finish();

获取第一项活动的价值

public void onActivityResult(int requestCode,int resultCode, Intent data)
{
    namaDokter=data.getStringExtra("namaDokter");
    idDokter=data.getStringExtra("idDokter");
}

但是如果我不按“ENTER”按钮并且只按下硬件上的后退按钮(当我使用模拟器时键盘上的Esc键),我的应用程序崩溃,我认为这是因为我没有得到任何价值来自data.getStringExtra("namaDokter");

我该怎么办?

3 个答案:

答案 0 :(得分:1)

您需要检查是否有RESULT_OK

public void onActivityResult(int requestCode,int resultCode, Intent data)
{
  if(ResultCode == RESULT_OK) {

    namaDokter=data.getStringExtra("namaDokter");
    idDokter=data.getStringExtra("idDokter");
  }else
    //You pressed back
}

答案 1 :(得分:1)

这种情况正在发生,因为当您按下Enter按钮时,您会传递带有值的意图,但是当您按下Back时,活动就会完成而不会传递任何意图。 <登记/> 所以你需要添加这个:

public void onActivityResult(int requestCode,int resultCode, Intent data)
{
  if(ResultCode == RESULT_OK) {
    namaDokter=data.getStringExtra("namaDokter");
    idDokter=data.getStringExtra("idDokter");
  }else
    Toast.makeText(getApplicationContext(),
          "You Pressed Back!",Toast.LENGHT_LONG).show();
}

希望它有所帮助。 :)

答案 2 :(得分:0)

除现有答案外,检查resultCode这是另一个答案:

如果您想发送Intent,即使用户已按下,您也可以覆盖第二个onBackPressed中的Activity - 方法:

@Override
public void onBackPressed() {
    Intent i = new Intent();
    i.putExtra("namaDokter", "kosong");
    i.putExtra("idDokter", "kosong");
    setResult(RESULT_OK, i);
    super.onBackPressed();
}