java - Android Studio - 如何修复使用 flag_activity_clear_task 后后退按钮仍然有效的问题 | flag_activity_new_task?

标签 java android android-fragments android-intent

我正在尝试向我的应用程序添加注销/注销功能。我正在关注这个 video在 youtube 上这样做。注销/注销功能工作正常,但在登录屏幕注销后我可以返回应用程序。我仍然没有尝试使用 onBackPressed() 方法。也许我可以努力防止后退 Action ,但我只是好奇为什么我的应用程序无法正常工作。

这是注销 fragment 代码

public class SignOutFragment extends Fragment {

    private static final String TAG = "SignOutFragment";

    //firebase
    private FirebaseAuth mAuth;
    private FirebaseAuth.AuthStateListener mAuthListener;

    private ProgressBar mProgressBar;
    private TextView tvSignout, tvSigningOut;

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_signout, container, false);
        tvSignout = (TextView) view.findViewById(R.id.tvConfirmSignout);
        mProgressBar = (ProgressBar) view.findViewById(R.id.progressBar);
        tvSigningOut = (TextView) view.findViewById(R.id.tvSigningOut);
        Button btnConfirmSignout = (Button) view.findViewById(R.id.btnConfirmSignout);

        mProgressBar.setVisibility(View.GONE);
        tvSigningOut.setVisibility(View.GONE);

        setupFirebaseAuth();

        btnConfirmSignout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Log.d(TAG, "onClick: attempting to sign out.");
                mProgressBar.setVisibility(View.VISIBLE);
                tvSigningOut.setVisibility(View.VISIBLE);

                mAuth.signOut();
            }
        });

        return view;
    }

     /*
    ------------------------------------ Firebase ---------------------------------------------
     */

    private void setupFirebaseAuth(){
        Log.d(TAG, "setupFirebaseAuth: setting up firebase auth.");

        mAuth = FirebaseAuth.getInstance();
        mAuthListener = new FirebaseAuth.AuthStateListener() {
            @Override
            public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
                FirebaseUser user = firebaseAuth.getCurrentUser();

                if (user != null) {
                    // User is signed in
                    Log.d(TAG, "onAuthStateChanged:signed_in:" + user.getUid());
                } else {
                    // User is signed out
                    Log.d(TAG, "onAuthStateChanged:signed_out");

                    Log.d(TAG, "onAuthStateChanged: navigating back to login screen.");
                    //Intent intent = new Intent(getActivity(), LoginActivity.class);
                    Intent intent = new Intent(getContext(),LoginActivity.class);
                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK| Intent.FLAG_ACTIVITY_NEW_TASK);
                    startActivity(intent);
                    getActivity().finish();
                }
                // ...
            }
        };
    }

    @Override
    public void onStart() {
        super.onStart();
        mAuth.addAuthStateListener(mAuthListener);
    }

    @Override
    public void onStop() {
        super.onStop();
        if (mAuthListener != null) {
            mAuth.removeAuthStateListener(mAuthListener);
        }
    }
}

最佳答案

我想建议像下面这样更改标志的顺序。

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);

关于java - Android Studio - 如何修复使用 flag_activity_clear_task 后后退按钮仍然有效的问题 | flag_activity_new_task?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56732551/

相关文章:

java - 如何使用Java读取电子邮件中的 Logo 和图像,其中电子邮件的内容是html/纯文本

java - 显式抛出 UnsupportedDataTypeException 而不在方法签名中声明 Throws

android - 在 Android NDK 项目中从命令行运行 CMake

Android应用架构-Fragment

android - ToggleButtons fragment SharedPref

android - 使用 fragment 时 viewModelFactory 变量尚未初始化

X.509 安全 Web 服务的 Java 客户端

如果使用 nu.pattern.OpenCV.loadShared() 加载 openCV,Java open CV 会卡在 VideoCapture 上以获取文件;

android - 如何更正 NativeScript 应用程序中 "Downloads"文件夹中的读取文件?

android - 软键盘上推布局或隐藏操作栏