我对一个简单的应用程序有一个很大且令人沮丧的问题。 我有两个活动 - A和B.活动A在按钮点击时打开活动B.活动B有两个“结束”:如果用户点击B.Back如果刚刚结束并返回A,如果用户点击B.OK按钮,活动B就完成但在此之前它设置结果“OK”,因此活动A可以关闭太
这是A:
的伪代码btnNext.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//some code...
startAct(data);
}
});
private void startAct(Intent inte) {
startActivityForResult(inte, -999);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
System.out.println(resultCode);
if(requestCode != -999)
return;
if(resultCode == RESULT_OK)
finish();
}
活动B的确如下:
btnOk.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//some other code...
finishOK();
}
});
private void finishOK() {
setResult(RESULT_OK, new Intent());
finish();
}
问题是这不起作用 - 当我按下“btnOK”B应该完成时,A应该“抓住”结果并完成,但它根本不会发生。我错过了什么?
答案 0 :(得分:3)
您必须使用非负requestCode
。如果requestCode
为否定,则startActivityForResult
与startActivity
相同。见官方文件http://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent,%20int)