Как избежать возврата в макет входа, нажав кнопку/кнопку "Назад"?

Я хочу создать приложение для своего института.

Проблема в том, что мое приложение будет иметь два макета (логин и панель инструментов).

Студенты могут правильно заполнить форму для входа, ввести панель управления, нажать кнопки и заполнить другие поля. Но если пользователь затем нажимает кнопку "Назад", он не должен возвращаться на экран входа в систему, но остается на панели мониторинга или не работает, выйдите из приложения.

Затем, если студент снова откроет приложение и он уже зарегистрирован, он должен быть автоматически перенаправлен на панель управления, а не на экран входа в систему, если только пользователь не нажмет кнопку выхода на панели управления, а затем перенаправит его обратно на экран входа в систему.

Как вы могли это сделать?

Изменить: Я реализовал 2 намерения и 2 действия, и возникли новые вопросы: когда я нажимаю кнопку "домой" и из диспетчера задач, я открываю приложение, открываю в оставшейся активности, но если открыть значок, чтобы открыть приложение снова из первого действия, как это сделать, чтобы открыть его в последнем?

Ответ 1

Я реализовал что-то похожее, используя SharedPreferences. Я сделал это:

LoginActivity

SharedPreferences settings;
public void onCreate(Bundle b) {
    super.onCreate(b);
    settings = getSharedPreferences("mySharedPref", 0);
    if (settings.getBoolean("connected", false)) {
        /* The user has already login, so start the dashboard */
        startActivity(new Intent(getApplicationContext(), DashBoardActivity.class));
    }
    /* Put here the login UI */
 }
 ...
 public void doLogin() {
    /* ... check credentials and another stuff ... */
    SharedPreferences.Editor editor = settings.edit();
    editor.putBoolean("connected", true);
    editor.commit();
 }

В вашем DashBoardActivity переопределить метод onBackPressed. Это приведет вас от DashBoardActivity к главному экрану.

@Override
public void onBackPressed() {
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory(Intent.CATEGORY_HOME);
    startActivity(intent);
}  

Надеюсь, что это поможет.

Ответ 2

Одна из идей заключается в том, чтобы сначала запустить панель управления, а затем запустить вход через нее в новом Activity, если вы обнаружите, что пользователь не вошел в систему. Затем вы можете пропустить диалоговое окно входа в систему. Если вы установили noHistory="true" в login Activity в манифесте, это будет предотвращено повторным появлением на задней панели.

Ответ 3

Переместите задачу, содержащую это действие, в конец стека действий. Порядок действий в задаче не изменяется.

@Override
public void onBackPressed() {
    moveTaskToBack(true);
    super.onBackPressed();
}