首页 > 解决方案 > 活动完成时,不调用 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 中提到了很多问题,但无法找出确切的问题。

标签: androidfragmentonactivityresult

解决方案


startActivityForResult()您在意图中设置的活动是ChangeFirstLoginPasswordActivity,但看起来您正试图从FirstLoginChangePasswordActivity.


推荐阅读