startActivityForResult() returns RESULT_CANCELED
startActivityForResult() returns RESULT_CANCELED
我有 2 个 Activity classes 和 1 个非 Activity class 从构造函数中传递的 Context 调用 startActivityForResult() 。它看起来是这样的:FirstActivity -> NonActivity -> SecondActivity -> FirstActivity。结果,在 SecondActivity 中有自定义对象的 ArrayList 需要传递给 FirstActivity。有一个问题。当调用 onActivityResult() 时,resultCode 是 RESULT_CANCELED,但不是 RESULT_OK,即使调用了 setResult(RESULT_OK, intent)。这是我的代码:
非Activity
public void showActivity() {
Intent intent = new Intent(request, ActivityKorak.class);
intent.putExtra("data", fields);
request.startActivityForResult(intent, 1);
}
第二Activity
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent();
intent.putExtra("data", fields);
setResult(Activity.RESULT_OK, intent);
finish();
}
第一Activity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
super.onActivityResult(requestCode, resultCode, intent);
if(resultCode != Activity.RESULT_CANCELED){
if(requestCode == 1) {
Bundle extras = intent.getExtras();
ArrayList<CustomInput> fields = (ArrayList<CustomInput>) extras.getSerializable("data");
}
}
}
您只需删除
super.onBackPressed();
在onBackPressed方法中
正在发生的事情是 "super.onBackPressed()" 正在将结果代码设置为 "RESULT_CANCELED" 并完成您的 activity。
就我而言,通过添加 Android Studio 中给出的 SHA-1 和 SHA-256 证书指纹解决了问题(单击 AS [=] 右侧的 Gradle 14=],然后 运行 配置和签名报告)到您的 Firebase 项目设置->常规->SDK 设置和配置。
我有 2 个 Activity classes 和 1 个非 Activity class 从构造函数中传递的 Context 调用 startActivityForResult() 。它看起来是这样的:FirstActivity -> NonActivity -> SecondActivity -> FirstActivity。结果,在 SecondActivity 中有自定义对象的 ArrayList 需要传递给 FirstActivity。有一个问题。当调用 onActivityResult() 时,resultCode 是 RESULT_CANCELED,但不是 RESULT_OK,即使调用了 setResult(RESULT_OK, intent)。这是我的代码:
非Activity
public void showActivity() {
Intent intent = new Intent(request, ActivityKorak.class);
intent.putExtra("data", fields);
request.startActivityForResult(intent, 1);
}
第二Activity
@Override
public void onBackPressed() {
super.onBackPressed();
Intent intent = new Intent();
intent.putExtra("data", fields);
setResult(Activity.RESULT_OK, intent);
finish();
}
第一Activity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent){
super.onActivityResult(requestCode, resultCode, intent);
if(resultCode != Activity.RESULT_CANCELED){
if(requestCode == 1) {
Bundle extras = intent.getExtras();
ArrayList<CustomInput> fields = (ArrayList<CustomInput>) extras.getSerializable("data");
}
}
}
您只需删除
super.onBackPressed();
在onBackPressed方法中
正在发生的事情是 "super.onBackPressed()" 正在将结果代码设置为 "RESULT_CANCELED" 并完成您的 activity。
就我而言,通过添加 Android Studio 中给出的 SHA-1 和 SHA-256 证书指纹解决了问题(单击 AS [=] 右侧的 Gradle 14=],然后 运行 配置和签名报告)到您的 Firebase 项目设置->常规->SDK 设置和配置。