Как избежать возврата в макет входа, нажав кнопку/кнопку "Назад"?
Я хочу создать приложение для своего института.
Проблема в том, что мое приложение будет иметь два макета (логин и панель инструментов).
Студенты могут правильно заполнить форму для входа, ввести панель управления, нажать кнопки и заполнить другие поля. Но если пользователь затем нажимает кнопку "Назад", он не должен возвращаться на экран входа в систему, но остается на панели мониторинга или не работает, выйдите из приложения.
Затем, если студент снова откроет приложение и он уже зарегистрирован, он должен быть автоматически перенаправлен на панель управления, а не на экран входа в систему, если только пользователь не нажмет кнопку выхода на панели управления, а затем перенаправит его обратно на экран входа в систему.
Как вы могли это сделать?
Изменить: Я реализовал 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();
}