我有活动A和B.当我在活动B上并且某些操作被触发时我正在调用活动A.在活动B上我正在使用startActivityforResult,检查活动结果的请求代码并显示警告对话框调用活动A后的UI。但我的onActivityresult
未被调用,因此我的对话框被调用。
以下是我的代码段。
public void Logout() {
autoLogoutHandler.removeMessages(MSG_APP_LOGOUT);
Intent intent = new Intent(Activity_B.this,
Activity_A.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivityForResult(intent, OPEN_NEW_ACTIVITY);
}
我的onActivityResult我正在检查我的请求代码,但它永远不会 调用。
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == OPEN_NEW_ACTIVITY) {
alert = new AlertDialog.Builder(getBaseContext())
.setTitle(null)
.setMessage(getString(xxxx))
.setIcon(null)
.setPositiveButton(getString(xxxx), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
}).show();
}
}
有人可以帮我解释为什么我的onActivityResult
没有被召唤?
答案 0 :(得分:0)
您的流程目前是
A -> opens -> B -> start onActivityResult -> A // doesn't work
你应该做什么:
A- > start onActivityResult -> B -> setResult() & finish() -> A -> handles onActivityResult -> voila!
活动A电话&等待活动B,在此活动过程是信息后,它将需要返回操作的结果是成功RESULT_OK
还是失败/取消RESULT_CANCELED
。
活动B关闭后,活动A将执行onActivityResult
方法,作为最佳实践,您将检查从startActivityForResult
调用的requestCode,然后检查操作是否成功或不...
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if (resultCode == RESULT_OK) {
// do work if successful
}
}
...
根据文档取消onActivityResult: https://developer.android.com/training/basics/intents/result.html