setResult不适用于@EActivity

时间:2014-04-09 20:10:04

标签: java android android-annotations

我正在尝试将bitResult放在我的" Register"按钮,但没有任何反应:

SignInActivity:

开始结果活动:

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() 方法,因为它设置了属性 android:noHistory AndroidManifest.xml上的所有活动中都有" true" 。我也在那里设置每个活动的父级。试图删除这些设置并且setResult继续没有工作。有没有人经历过这个?

3 个答案:

答案 0 :(得分:2)

  

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

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

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

答案 1 :(得分:0)

启动结果活动。你的代码是好的

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

现在,在为结果设置的Activity中,设置结果状态,如下面的代码。

setResult(resultCode);结果状态可能的值类似于RESULT_CANCELED,RESULT_OK.etc

启动结果的新活动的活动必须覆盖以下方法,并且此方法在为结果启动的活动完成时起作用。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
}

答案 2 :(得分:-1)

我认为方法是..

onActivityResult(int requestCode,int resultCode,Intent data)

not onResult