У меня есть приложение для андроида Xamarin, которое имеет два вида деятельности. Первый - это активность входа (LoginActivity
), которая при успешном входе в систему вызывает StartActivity
(MainActivity
). Я пытаюсь не допустить, чтобы MainActivity переместился обратно на LoginActivity
при нажатии кнопки «Назад» и попытался переопределить OnBackPressed()
, однако этот метод никогда не срабатывает на MainActivity
. У меня есть переопределенный тот же метод в LoginActivity
, который срабатывает отлично.Xamarin Activity OnBackPressed() не стреляет
public override void OnBackPressed()
{
// Do nothing
string test = ""; // Setting a breakpoint here and it's never hit.
}
Я также попытался перекрывая OnKeyDown()
, которые также никогда не стреляет на MainActivity
.
public override bool OnKeyDown(Keycode keyCode, KeyEvent e)
{
if (keyCode == Keycode.Home)
{
return false;
}
return base.OnKeyDown(keyCode, e);
}
Единственный метод, который я могу видеть, что стреляет, когда я нажимаю кнопку назад на MainActivity
является OnPause()
.
Есть ли что-то особенное, что мне не хватает от MainActivity
, чтобы я мог переопределить OnBackPressed()
?
Заранее благодарим за ваше время.
Спасибо, Пол. Требуется ли что-нибудь для MainActivity для этого? Я добавил атрибут NoHistory в LoginActivity, однако он все еще переводит меня обратно в LoginActivity, когда я нажимаю кнопку «Назад». – JMG
@JMG Я обновил свой ответ, чтобы показать вам оба кода действий, и я добавил пример, который я попробовал в GitHub, не стесняйтесь проверить все. –
Еще раз спасибо. Это отлично работает на моем Galaxy S6 Edge, однако на устройстве Lollipop (5.1) он терпит неудачу. В 5.1, нажатие назад закрывает приложение в вашем примере приложения. Должна быть какая-то несовместимость или ошибка с 5.1, возможно. – JMG