Я разрабатываю приложение, которое начинается с LoginPage. Когда пользователь входит в систему, он переходит на главный экран, где присутствует сетка для разных отделов.
Каждая страница приложения, кроме страницы входа, имеет нижний колонтитул, который имеет разные значки, такие как "Главная", "Выход из системы" и т.д.
Я хочу добавить условную функциональность назад с помощью кнопки мобильного возврата. Некоторые условия заключаются в следующем:
1) LoginPage ---> Главный экран ---> На задней панели пользователя следует выйти из системы и перейти на страницу входа
2) Главный экран → любой отдел ---> Любой субдискмент → Если пользователь нажмет кнопку "Назад", вернитесь назад в том же порядке
3) Пользователь - любой, где в приложении ---> Если нажать главную кнопку из нижнего колонтитула ---> Приходит на главный экран → Нет обратной функции, чтобы перейти на предыдущую страницу, она должна следовать условию 1.
4) Если пользователь на странице входа в систему, то он выйдет из приложения при нажатии кнопки "Назад"
5) Если пользователь на главном экране, то пользователь должен выйти из системы и перейти на страницу входа в систему при нажатии кнопки "Назад"
Я пробовал с "noHistory = true" в манифесте и с флагами Intent в файле Activity.
Может ли любой орган предложить мне лучший способ его решить.
Насколько я понимаю, вы не можете переопределить функциональность кнопки "домой". По умолчанию он сводит к минимуму ваше приложение с его текущим состоянием, вызывая onPause(). Когда вы снова открываете приложение, вызывается onResume() и запускает приложение с того места, где оно было приостановлено. Что касается функциональных возможностей кнопки "Назад", большинство из этих ответов являются точными.
Пытаться,
@Override
public void onBackPressed()
{
finish(); //finishes the current activity and doesnt save in stock
Intent i = new Intent(CurrentActivity.this, Login.class);
i.addflags(Intent.flag_activity_no_history);
startActivity(i);
}
Используйте стек по всему миру для сохранения порядка экранов. Стек должен быть доступен на уровне приложений. И получите заказ экрана, когда вы нажмете кнопку "Назад". Запишите регистр переключателя для порядка экрана и начните эту операцию. это.
например.
crate a class class MyStack{
//here declare a static stack
//create setter,getter method for assinging values to stack
}
при запуске нового действия, подтверждающего значение экрана в стеке с помощью метода setter, если вы начинаете действие с главного экрана, назначьте 1 в стек, вы начинаете присваивать 2-й экран в стек.
когда нажимают на назад, получите это значение
switch(value){
case 1: //start mainscreen break;
case 2: //start sub screen break;
}
не должно быть проблемой, все, что вам нужно сделать, это переопределить функцию onBack
и добавить процесс выхода из системы.
не проблема, нормальное поведение кнопок с обратной связью именно это.
НЕ ДЕЛАЙ ЭТО!!! ПЛОХОЕ ПОВЕДЕНИЕ.
нормальное поведение кнопки "Назад".
это был первый шаг.
это используется для выхода из приложения на заднем пульте.
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
if (keyCode == KeyEvent.KEYCODE_BACK) {
finish();
System.exit(0);
}
return super.onKeyDown(keyCode, event);
}
если u хочет только обратно, то удалите System.exit(0) из кода выше. Используя это, вы можете управлять всем своим состоянием, которое вы хотите.
System.exit(0)
является плохой практикой и не должно использоваться
Я думаю, что самый простой подход может состоять в том, чтобы переопределить кнопку "Назад" в вашем "главном экране", чтобы при нажатии кнопки "Назад" вы можете выполнить следующие действия: 1. Выполнение логики выхода из системы: 2. Явно вызовите вашу страницу входа в систему
Это может привести к поведению, которое вы ищете. О том, как переопределить кнопку "Назад", можно найти по этой ссылке: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html
Надеюсь это поможет!
на каждом мероприятии реализует OnBackPress(). Переопределите его и добавьте нужные функции, такие как выход из системы, очистку стека истории и запуск новой (предыдущей) активности.
onBack
не на onBackPress
Попробуйте это, чтобы заблокировать события на обратной кнопке
public boolean onKeyDown(int keyCode, KeyEvent event){
if(keyCode == KeyEvent.KEYCODE_BACK) {
Intent Act2Intent = new Intent(thisActivity, Activity2.class);
startActivity(Act2Intent);
finish();
return true;
}
return false;
}