Вернуться функциональность в Android

1

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

Каждая страница приложения, кроме страницы входа, имеет нижний колонтитул, который имеет разные значки, такие как "Главная", "Выход из системы" и т.д.

Я хочу добавить условную функциональность назад с помощью кнопки мобильного возврата. Некоторые условия заключаются в следующем:

1) LoginPage ---> Главный экран ---> На задней панели пользователя следует выйти из системы и перейти на страницу входа

2) Главный экран → любой отдел ---> Любой субдискмент → Если пользователь нажмет кнопку "Назад", вернитесь назад в том же порядке

3) Пользователь - любой, где в приложении ---> Если нажать главную кнопку из нижнего колонтитула ---> Приходит на главный экран → Нет обратной функции, чтобы перейти на предыдущую страницу, она должна следовать условию 1.

4) Если пользователь на странице входа в систему, то он выйдет из приложения при нажатии кнопки "Назад"

5) Если пользователь на главном экране, то пользователь должен выйти из системы и перейти на страницу входа в систему при нажатии кнопки "Назад"

Я пробовал с "noHistory = true" в манифесте и с флагами Intent в файле Activity.

Может ли любой орган предложить мне лучший способ его решить.

  • 0
    Спасибо всем за ваши ценные предложения. :)
Теги:
android-layout
android-intent

7 ответов

0
Лучший ответ

Насколько я понимаю, вы не можете переопределить функциональность кнопки "домой". По умолчанию он сводит к минимуму ваше приложение с его текущим состоянием, вызывая 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);
}
  • 0
    не забудьте сбросить все переменные sharedpreference, когда вы выполняете выход.
1

Используйте стек по всему миру для сохранения порядка экранов. Стек должен быть доступен на уровне приложений. И получите заказ экрана, когда вы нажмете кнопку "Назад". Запишите регистр переключателя для порядка экрана и начните эту операцию. это.

например.

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;
}
1
  1. не должно быть проблемой, все, что вам нужно сделать, это переопределить функцию onBack и добавить процесс выхода из системы.

  2. не проблема, нормальное поведение кнопок с обратной связью именно это.

  3. НЕ ДЕЛАЙ ЭТО!!! ПЛОХОЕ ПОВЕДЕНИЕ.

  4. нормальное поведение кнопки "Назад".

  5. это был первый шаг.

  • 1
    3. НЕ ДЕЛАЙТЕ ЭТОГО !!! ПЛОХОЕ ПОВЕДЕНИЕ. Можете ли вы сказать мне, почему это плохое поведение?
  • 0
    **НА САМОМ ДЕЛЕ!!! ** :)
1

это используется для выхода из приложения на заднем пульте.

@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) из кода выше. Используя это, вы можете управлять всем своим состоянием, которое вы хотите.

  • 1
    использование System.exit(0) является плохой практикой и не должно использоваться
  • 0
    но его боз он хотел выйти из своего приложения так
0

Я думаю, что самый простой подход может состоять в том, чтобы переопределить кнопку "Назад" в вашем "главном экране", чтобы при нажатии кнопки "Назад" вы можете выполнить следующие действия: 1. Выполнение логики выхода из системы: 2. Явно вызовите вашу страницу входа в систему

Это может привести к поведению, которое вы ищете. О том, как переопределить кнопку "Назад", можно найти по этой ссылке: http://android-developers.blogspot.com/2009/12/back-and-other-hard-keys-three-stories.html

Надеюсь это поможет!

0

на каждом мероприятии реализует OnBackPress(). Переопределите его и добавьте нужные функции, такие как выход из системы, очистку стека истории и запуск новой (предыдущей) активности.

  • 0
    это на onBack не на onBackPress
  • 0
    вот что происходит, когда кто-то полагается на автозаполнение :(
0

Попробуйте это, чтобы заблокировать события на обратной кнопке

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;
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню