不触发/调用onActivityforResult

时间:2016-09-28 19:26:11

标签: java android android-intent android-activity onactivityresult

我有活动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没有被召唤?

1 个答案:

答案 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