我在一个简单的应用程序中遇到了一个大而令人沮丧的问题。
我有两个活动 - 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 应该“捕获”结果并也完成,但它根本不会发生。我缺少什么?
你必须使用非负数requestCode
。如果requestCode
那么是负数startActivityForResult
是相同的startActivity
。参见官方文档http://developer.android.com/reference/android/app/Activity.html#startActivityForResult(android.content.Intent,%20int)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)