我正在尝试在“注册”按钮上设置setResult,但是什么也没有发生:

登录活动:

开始活动以获得结果:

Intent intent = RegisterActivity_.intent(this).get();
this.startActivityForResult(intent, REQUEST_CODE_USER_REGISTER);


活动结果

@OnActivityResult(REQUEST_CODE_USER_REGISTER)
protected void onResult(int resultCode) {
    if (resultCode == RESULT_OK)
        DashboardActivity_.intent(this).start();
    else if (resultCode == RESULT_CANCELED) {
        this.showDialogAlert("Unexpected error", null);
}


RegisterActivity:

this.setResult(RESULT_OK);


我正在使用AndroidAnnotations,但未使用this.finish()方法,因为它在AndroidManifest.xml的所有Activity中都设置了属性android:noHistory =“ true”。我还将在那里设置每个活动的父级。尝试删除了这些设置,并且setResult继续进行而没有任何工作。有人经历过吗?

最佳答案

我正在使用AndroidAnnotations,但未使用this.finish()方法,因为它在AndroidManifest.xml的所有Activity中都设置了属性android:noHistory =“ true”。


我认为您的问题就在这里。使用startActivityForRestult时,预期的工作流程是启动一个新活动,执行一些工作,然后关闭该活动以返回上一个活动,并返回工作结果。因此,您不能在此处使用android:noHistory="true",因为它没有任何意义。

另外,如果查看Activity的源代码,您会看到结果是从finish方法传播的。

07-28 03:49