Problem z obsługą przycisku BackButton

Problem z obsługą przycisku BackButton
MivS
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 3 lata
  • Postów:90
0

Witam serdecznie. Tworzę uniwersalną aplikację na platformę Windows 8.1. Natrafiłem na mały problem. Podczas dodawania obsługi przycisku BackButton

Kopiuj
       public App()
        {
            this.InitializeComponent();
            this.Suspending += this.OnSuspending;
            UnhandledException += Application_UnhandledException;
#if WINDOWS_PHONE_APP
            HardwareButtons.BackPressed += HardwareButtons_BackPressed;
#endif

        }

#if WINDOWS_PHONE_APP
        private void HardwareButtons_BackPressed(object sender, BackPressedEventArgs e)
        {
            Frame frame = Window.Current.Content as Frame;
            if (frame == null)
            {
                return;
            }

            if (frame.CanGoBack)
            {
                frame.GoBack();
                e.Handled = true;
            }
        }


#endif

Niestety całość jest nie aktywna a kompilator podkreśla mi using:

Kopiuj
using Windows.Phone.UI.Input;

Podejrzewam że problem leży po stronie dwóch aplikacji w jednym projekcie. Wiecie jak to obejść?

Dorzucam screen:

title

Usunąłem warunki w celu zrobienia screena z błędem ;)

edytowany 1x, ostatnio: MivS
Ktos
Moderator
  • Rejestracja:prawie 23 lata
  • Ostatnio:około 15 godzin
1

Każdy kawałek kodu zależny od platformy (w tym using) też musisz objąć w odpowiedni #ifdef.

MivS
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 3 lata
  • Postów:90
0

Hmm. Nic mi to nie mówi. Szukałem rozwiązania w Google i nie mogę nic znaleźć. Chciałbym żeby ten przycisk działał również na innych urządzeniach.

Mógłbyś podać mi jakiś przykład?

edytowany 1x, ostatnio: Ktos
Ktos
Moderator
  • Rejestracja:prawie 23 lata
  • Ostatnio:około 15 godzin
1

Tak, jak zrobiłeś:

Kopiuj
public App()
        {
            this.InitializeComponent();
            this.Suspending += this.OnSuspending;
            UnhandledException += Application_UnhandledException;
#if WINDOWS_PHONE_APP
            HardwareButtons.BackPressed += HardwareButtons_BackPressed;
#endif
 
        }

// i tak samo objęta ta metoda HardwareButtons_BackPressed

I ten #if musi być również w usingach:

Kopiuj
#if WINDOWS_PHONE_APP
using Windows.Phone.UI.Input;
#endif

Jeżeli jest nieaktywne (szare), to dlatego, że masz aktywny projekt dla Windows 8, nie dla WP8 - zmień sobie projekt aktywny (kliknij prawym w Solution Explorer na projekcie Windows Phone i wybierz "Set up as start-up project").

edytowany 1x, ostatnio: Ktos
MivS
  • Rejestracja:ponad 8 lat
  • Ostatnio:ponad 3 lata
  • Postów:90
0

Próbowałem tego wcześniej :/ ale nie z wybraną opcją "Set up as start-up project" która załatwiła sprawę :D Dziękuje za pomoc :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.