Активность вызова Android OnBackPressed два раза

У меня проблема в моем приложении, когда я дважды щелкаю действие, вызываемое дважды, когда моя идея приложения: 3 действия (LoginActivity, MainMenuActivity и CashActivity), пользователь вошел в систему с LoginActivity на CashActivity, но при нажатии обратно переход к MainMenuActivity и при нажатии обратно из MainMenuActivity переходит на LoginActivity, когда я возвращаюсь с LoginActivity, вызывается LoginActivity два раза.

Мой код:

@Override
public void onBackPressed() {
    Intent intent = new Intent(this, MainMenuActivity.class);
    finish();
    this.startActivity(intent);
}

this code called in all these activities .

1
0
379
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Когда вы переходите от входа к наличным, завершите вход в систему. вот в чём проблема. я думаю

Вы можете проверить PressedTime. И есть множество способов проверить onBackPressed.

дважды нажав кнопку «Назад», чтобы выйти из действия

long backPressedTime;

@Override
public void onBackPressed() {
    if (backPressedTime + 1000 > System.currentTimeMillis()){
        super.onBackPressed();
        //Todo

    }
    else{
        Toast.makeText(getBaseContext(), "Double Back Pressed", Toast.LENGTH_SHORT).show();
    }
    backPressedTime = System.currentTimeMillis();
}
Ответ принят как подходящий

Вы можете использовать этот следующий код, нажав на обратную кнопку и отобразив Snackbar ...

    @Override
    public void onBackPressed() 
    {
        if (exit)
        // Any practical instruction can be written : 
        //Intent intent = new Intent(LoginActivity.this, LoginActivity.class);
        //startActivity(intent);

            YourActivity.this.finish();
        else 
        {
            Snackbar snkbr = Snackbar
                    .make(crdLayout, "Click once again to exit", Snackbar.LENGTH_LONG)
                    .setActionTextColor(Color.WHITE);
            View snackBarView = snkbr.getView();
            snackBarView.setBackgroundColor(ContextCompat.getColor(Context(), R.color.snackBarColor));
            snkbr.show();
            exit = true;
            new Handler().postDelayed(new Runnable() 
            {
                @Override
                public void run()
                {
                    exit = false;
                }
            }, 3 * 1000);
        }
    }

Другие вопросы по теме