android - 活动完成时,不调用 Fragment 中的 onActivityResult
问题描述
我遇到了 onActivityResult not Called in Fragment 的问题。
我的容器活动 onActivityResult 上的LoginContainerActivity 未被覆盖
LoginFragment 扩展 BaseLoginFragment
基本登录片段
public abstract class BaseLoginFragment extends BaseFragment{
Intent intent = new Intent(mContext, ChangeFirstLoginPasswordActivity.class); intent.putExtra(StringConstants.DATA, ApiConstants.CHANGE_TXN_PASSWORD); this.startActivityForResult(intent, REQ_CODE_TRANSACTION_PASSWORD_EXPIRED);
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == Activity.RESULT_OK) {
switch (requestCode) {
case REQ_CODE_TRANSACTION_PASSWORD_EXPIRED:
if (data.hasExtra(StringConstants.FIRST_LOGIN_PASSWORD_CHANGED) &&
data.getBooleanExtra(StringConstants.FIRST_LOGIN_PASSWORD_CHANGED, false)) {
mBiometricSetupVm.checkBiometricLoginStatus();
}
if (data.hasExtra(StringConstants.DATA) &&
data.getStringExtra(StringConstants.DATA).equalsIgnoreCase(ApiConstants.CHANGE_TXN_PASSWORD)) {
showTxnPasswordDialogAfterLoginPassword();
}
break;
ChangeFirstLoginPasswordActivity
公共类 ChangeFirstLoginPasswordActivity 扩展 FirstLoginChangePasswordActivity {
FirstLoginChangePasswordActivity
public abstract class FirstLoginChangePasswordActivity extends {
私人观察者 loginPasswordChangeSuccessObs = apiModel -> { mFirebaseAnalytics.logEvent("first_login_change_password_success", new Bundle());
if (mBiometricSetupVm.isBiometricLoginEnabled.getValue()) { mBiometricSetupVm.disableBiometricAuthentication(); } if (getIntent().hasExtra(StringConstants.DATA)) { Intent intent = new Intent(); intent.putExtra(StringConstants.DATA, getIntent().getStringExtra(StringConstants.DATA)); intent.putExtra(StringConstants.FIRST_LOGIN_PASSWORD_CHANGED, true); setResult(Activity.RESULT_OK, intent); } else { NotificationUtils.showInfo(this, apiModel.getMessage()); Intent intent = new Intent(); intent.putExtra(StringConstants.FIRST_LOGIN_PASSWORD_CHANGED, true); setResult(Activity.RESULT_OK, intent); } finish(); };
AndroidManifest
<activity
android:name=".appcore.components.changepassword.login.ChangeLoginPasswordActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden" />
<activity
android:name=".components.login.login.LoginContainerActivity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustPan" />
一切都很好,但片段中的 onActivityResult 没有被调用。我无法弄清楚我在哪里失踪。我在 stackoverflow 中提到了很多问题,但无法找出确切的问题。
解决方案
startActivityForResult()
您在意图中设置的活动是ChangeFirstLoginPasswordActivity
,但看起来您正试图从FirstLoginChangePasswordActivity
.
推荐阅读
- android - 文件资源管理器显示内部存储图像
- javascript - “无法读取未定义的属性‘xyz’”:如何在数字 json 上使用 map 或 foreach?
- mongodb - 聚合函数返回错误的查询长度
- c# - 返回任务中的对话框
- python - OOP 中的 Python MQTT 回调
- c# - GroupBy 键值对列表然后重新组合结果
- c# - 这段 C# 代码是否足以唯一标识一台计算机?
- java - 如何解决创建索引时的映射问题?
- ionic-framework - 我无法安装@ionic/cli-plugin-proxy:1.3.0
- android - 集成到现有的 Android 应用程序中,获取错误 null 不是对象(评估 'RNGestureHandlerModule.Direction)