我有两个活动,在第二个活动中,当我按下回车键时,它会得到一些价值并带回第一个活动。
这是我的代码:
第二项活动
//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");
我该怎么办?
答案 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();
}