我正在尝试将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继续没有工作。有没有人经历过这个?
答案 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