Android onActivityResult始终返回0
我让LoginActivity在登录后返回结果。然而,我总是在Android onActivityResult始终返回0,android,android-activity,Android,Android Activity,我让LoginActivity在登录后返回结果。然而,我总是在onActivityResult()方法中得到0。我不明白原因。这是我的密码: MainActivity.java: @Override protected void onResume() { super.onResume(); Intent intent = new Intent(this, LoginActivity.class); startActivityForResult(intent, R.id.
onActivityResult()方法中得到0。我不明白原因。这是我的密码:
MainActivity.java:
@Override
protected void onResume() {
super.onResume();
Intent intent = new Intent(this, LoginActivity.class);
startActivityForResult(intent, R.id.login);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == R.id.login || resultCode==RESULT_OK)
synchronizeContacts(R.id.contactList);
}
}
private TaskCompleteListener<CsResult> taskCompleteListener = new TaskCompleteListener<CsResult>(){
@Override
public void onComplete(int requestId, CsResult result) {
if (result==null || result.return_code!=0){
String message = !TextUtils.isEmpty(result.return_message) ? result.return_message : getString(R.string.msg_invalid_user);
JAppUtils.showMsg(LoginActivity.this, message, MsgType.ERROR);
return;
}
Log.d(TAG, "***** I can see this is called ******");
setResult(RESULT_OK);
finish();
}
};
public void loginClick(View view){
LoginTask task = new LoginTask(this);
task.setTaskCompleteListener(taskCompleteListener);
task.setLoginUser("user_id", "password");
task.execute(ServerConfig.URL);
}
LoginActivity.java:
@Override
protected void onResume() {
super.onResume();
Intent intent = new Intent(this, LoginActivity.class);
startActivityForResult(intent, R.id.login);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == R.id.login || resultCode==RESULT_OK)
synchronizeContacts(R.id.contactList);
}
}
private TaskCompleteListener<CsResult> taskCompleteListener = new TaskCompleteListener<CsResult>(){
@Override
public void onComplete(int requestId, CsResult result) {
if (result==null || result.return_code!=0){
String message = !TextUtils.isEmpty(result.return_message) ? result.return_message : getString(R.string.msg_invalid_user);
JAppUtils.showMsg(LoginActivity.this, message, MsgType.ERROR);
return;
}
Log.d(TAG, "***** I can see this is called ******");
setResult(RESULT_OK);
finish();
}
};
public void loginClick(View view){
LoginTask task = new LoginTask(this);
task.setTaskCompleteListener(taskCompleteListener);
task.setLoginUser("user_id", "password");
task.execute(ServerConfig.URL);
}
private TaskCompleteListener TaskCompleteListener=new TaskCompleteListener(){
@凌驾
public void onComplete(int requestId,CsResult){
if(result==null | | result.return_code!=0){
String message=!TextUtils.isEmpty(result.return\u message)?result.return\u message:getString(R.String.msg\u无效用户);
showMsg(LoginActivity.this,message,MsgType.ERROR);
返回;
}
Log.d(标记,“******我可以看到它被称为******”;
设置结果(结果\正常);
完成();
}
};
公共无效登录单击(查看){
LoginTask任务=新的LoginTask(此任务);
task.setTaskCompleteListener(taskCompleteListener);
task.setLoginUser(“用户id”、“密码”);
task.execute(ServerConfig.URL);
}
调试或查看日志时,taskCompleteListener.onComplete()
方法正确调用并返回MainActivity
以调用onActivitResult()
方法<代码>请求代码
正确,但结果代码
始终是活动。结果\u取消
我可以再次检查什么?尝试以下操作:
Log.d(TAG, "***** I can see this is called ******");
setResult(RESULT_OK, new Intent());
finish();
试试这个:
Log.d(TAG, "***** I can see this is called ******");
setResult(RESULT_OK, new Intent());
finish();
试试这个
Intent intent = new Intent(this, LoginActivity.class);
startActivityForResult(intent, 1);
在您的onActivityResult()中使用此选项
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1 && resultCode == RESULT_OK && data != null )
{
// Here you can get the username and password
}
}
在您的登录活动中
Intent intent = getIntent();
intent.putExtra("UserName", user_id); // Place your information.
intent.putExtra("Password", password);
setResult(RESULT_OK, intent);
finish();
祝你好运试试这个
Intent intent = new Intent(this, LoginActivity.class);
startActivityForResult(intent, 1);
在您的onActivityResult()中使用此选项
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1 && resultCode == RESULT_OK && data != null )
{
// Here you can get the username and password
}
}
在您的登录活动中
Intent intent = getIntent();
intent.putExtra("UserName", user_id); // Place your information.
intent.putExtra("Password", password);
setResult(RESULT_OK, intent);
finish();
祝你好运,我想知道一些事情。通过onResume()
方法中的onActivityResult()
调用下一个应用程序,因此示例中的活动生命周期如下所示
onCreate->onResume->下一个活动->返回主活动->
现在我的问题是在恢复()之前调用onActivityResult()
还是在恢复()之后调用?因为只要当前活动进入前台,就会调用onResume()
。因此,我想知道是否每次进行授权过程时都会调用第二个活动
如果您只想直接从主活动移动到登录活动,为什么不将onResume()
代码段放入onCreate()
?这样,您就可以确定授权过程只调用了一次,并且与我所看到的几乎没有区别。我不是说这就是解决方案,只是提供了我注意到的一些想法。我想知道一些事情。通过onResume()
方法中的onActivityResult()
调用下一个应用程序,因此示例中的活动生命周期如下所示
onCreate->onResume->下一个活动->返回主活动->
现在我的问题是在恢复()之前调用onActivityResult()
还是在恢复()之后调用?因为只要当前活动进入前台,就会调用onResume()
。因此,我想知道是否每次进行授权过程时都会调用第二个活动
如果您只想直接从主活动移动到登录活动,为什么不将onResume()
代码段放入onCreate()
?这样,您就可以确定授权过程只调用了一次,并且与我所看到的几乎没有区别。我并不是说这就是解决方案,只是提供了我注意到的一些想法。设置结果的Instaed\u OK设置请求代码的值,该值不能为-1,0和1,因为Android已经在使用它
E.g:
startActivityForResult(5,new Intent());
and
Intent intent = getIntent();
setResult(5, intent);
Remember value must not be -1,0 or 1 as request code
设置结果的Instaed_OK设置请求代码的值,该值不能为-1,0和1,因为Android已经使用了该值
E.g:
startActivityForResult(5,new Intent());
and
Intent intent = getIntent();
setResult(5, intent);
Remember value must not be -1,0 or 1 as request code
我之所以在onResume()方法中输入login,是因为我想一直显示登录活动,直到用户成功登录为止。用户可以按home按钮退出我的应用程序,但我希望我的应用程序始终像home launcher一样在顶部运行。如果我将登录名放在onCreate()方法中,当用户点击home按钮时,登录活动将在未登录的情况下消失。Ok。我不完全理解为什么您希望使用onResume()
方法启动登录活动
,但我想这是有原因的。你能帮我调试一下吗?在onResume()
的开头和onActivityResult()
中放置断点。然后告诉我哪个断点先命中。我之所以把login放在onResume()方法中,是因为我想一直显示登录活动,直到用户成功登录为止。用户可以按home按钮退出我的应用程序,但我希望我的应用程序始终像home launcher一样在顶部运行。如果我将登录名放在onCreate()方法中,当用户点击home按钮时,登录活动将在未登录的情况下消失。Ok。我不完全理解为什么您希望使用onResume()
方法启动登录活动
,但我想这是有原因的。你能帮我调试一下吗?在onResume()
的开头和onActivityResult()
中放置断点。然后告诉我哪个断点先命中。或者使用日志记录,任何适合您的方法。您是否尝试过调试它。您是否检查了您的putExtra()
是否有价值?当然,我尝试了好几次,但都没有成功。只有requestCode是我所期望的,而其他的则不是。实际上,作为问题主题的setResult确实有效。我也有同样的问题,这就解决了。对我不起作用的是多余的。虽然它确实在该intent实例中添加了额外的值,但在onActivityResu上调用活动接收到的intent中从未出现过这些值