Android: отключить или переопределить OnBackPressed внутренней активности

Используя Xamarin для Android, я использую сторонний компонент для создания экрана блокировки с помощью PIN-кода для различных действий в моем приложении.

Когда пользователь входит в систему в первый раз, ему предлагается создать пин-код. Это запускает стороннюю активность для создания булавки. Если пользователь нажимает кнопку «Назад» во время этого действия, он возвращается на главный экран моего приложения и обходит создание и проверку вывода.

У меня нет доступа для изменения кода внутренней деятельности третьей стороны.

Я также запускаю действие с помощью вызова метода компонента, а не с помощью вызова StartActivity.

Мне нужен способ отключить или переопределить событие onBackPressed для этих внутренних действий. Есть ли способ отключить кнопку «Назад» для всего приложения, а затем снова включить ее, когда пользователь вернется из стороннего компонента?

Любые идеи о том, как я могу отключить событие OnBackPressed для действия, на которое у меня нет прав на изменение?

PS: Компонент представляет собой экран блокировки Xamarin.


person Mason    schedule 06.03.2014    source источник
comment
В своей деятельности вы должны каким-то образом обнаруживать результат активности булавки. В любом случае, когда эта активность закрывается и ваша активность вызывается обратно, вы должны пройти через метод onResume(). Разве вы не можете контролировать, что пин-код не был добавлен туда?   -  person Makerhack    schedule 07.03.2014


Ответы (1)


Если бы вы могли использовать активность компонента третьей части в качестве базового класса для своей активности или расширить ее, создав свой собственный класс, вы могли бы переопределить OnBackPressed следующим образом:

public class yourNewActivity: ThirdyPartActivityClass{

//...

public override void OnBackPressed()
    {
        if (BackEventEnabled)
             base.OnBackPressed();
     }

}

где в вашем классе public bool BackEventEnabled = true; (или false, чтобы отключить);

Перед запуском активности с помощью метода компонента вы можете сделать

BackEventEnabled = false;

и после

BackEventEnabled = true;

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

person Daniele D.    schedule 23.02.2015