Предотвращение перехода пользователя к действиям после выхода из системы - PullRequest
2 голосов
/ 19 апреля 2011

У меня есть 3 вида деятельности:

  1. LoginScreen.
  2. В начало.
  3. ProfileScreen.

Экран входа в систему является основным действием, которое вызывается впервые, и при нажатии кнопки входа в систему я вызываю действие основного экрана, используя следующий код:

finish(); // I am calling finish because I don't want user to press back key at mainscreen and get back to login screen.
Intent it = new Intent(LoginScreen.this,MainScreen.class);
startActivity(it);

На моем главном экране у меня есть кнопка выхода из системы, и я использую этот код для выхода из системы:

finish();
Intent it = new Intent(MainScreen.this,LoginScreen.class);
containerObject.startActivity(it);

Я не знаю почему, но этот код не выводит меня на экран входа в систему.

Если я изменю код сверху на этот код:

finish();
Intent it = new Intent(MainScreen.this,ProfileScreen.class);
containerObject.startActivity(it);

Код работает абсолютно нормально и выводит меня на экран профиля.

Позвольте мне прояснить, что я добавил все 3 действия в манифест.

Я получаю эту проблему только потому, что "LoginScreen" является основным видом деятельности?

1 Ответ

0 голосов
/ 25 ноября 2015

Лучше поздно, чем никогда.

В обработчике нажатия кнопки выхода из системы вы должны начать действие, используя containerObject, так как вы уже завершили действие MainScreen, поэтому Вы должны перейти к родительскому контейнеру своей деятельности.

logoutButtonClick(../..[

    finish();
    Intent it = new Intent(MainScreen.this,LoginScreen.class);
    containerObject.startActivity(it);
}

Чтобы убедиться, что действие завершено, вызовите this.finish в обработчике по щелчку, но после запуска намерения.

logoutButtonClick(../.. {
    startActivity(new Intent(this, LoginScreen.class));
    this.finish();
}

Затем переопределите событие onBackPressed во время действия LoginScreen. Так обратное нажатие будет продолжать выводить пользователя на экран входа в систему.

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

Я не уверен, как вы хотите управлять навигацией в течение приложение между тремя видами деятельности, поэтому я не буду вдаваться в подробности, чтобы перемещаться между Активность ProfileScreen и двух других, но я уверен, что у вас достаточно информации для перемещения вперед с этим.

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

...