简体   繁体   中英

Windows UWP app mobile back button not working

I'm using this well documented solution to add a back button to our app. I'm setting things up like this when the App is initialized:

    Windows.UI.Core.SystemNavigationManager.GetForCurrentView().AppViewBackButtonVisibility = AppViewBackButtonVisibility.Visible;

         Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested += CreateNewKeyView_BackRequested;

private void CreateNewKeyView_BackRequested(object sender, BackRequestedEventArgs e)
            {
                NavigationService.Instance.GoBack();    
            }

The back button is shown on the desktop app and works as expected, navigating our Frame back to previous pages.

However, on Windows Phone, the hardware button just exits the app. The various places that I found code like this all state that this should work for the mobile hardware button, but it simply isn't working for us.

您应该在CreateNewKeyView_BackRequested方法中设置e.Handled = true

Don't know how you code for your NavigationService , I just tested the following code, it works by my side:

private void CreateNewKeyView_BackRequested(object sender, BackRequestedEventArgs e)
{
    Frame rootFrame = Window.Current.Content as Frame;
    if (rootFrame != null)
    {
        if (rootFrame.CanGoBack)
        {
            e.Handled = true;
            rootFrame.GoBack();
        }
    }
}

Or, for a phone, we use also special API for Hardware Buttons .

You can judge if the current using a phone Api is or not in the OnLaunched method:

if (Windows.Foundation.Metadata.ApiInformation.IsTypePresent("Windows.Phone.UI.Input.HardwareButtons"))
{
    Windows.Phone.UI.Input.HardwareButtons.BackPressed += OnBackPressed;
}

then complete the OnBackPressed method:

public void OnBackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
    Frame rootFrame = Window.Current.Content as Frame;
    if (rootFrame != null)
    {
        if (rootFrame.CanGoBack)
        {
            e.Handled = true;
            rootFrame.GoBack();
        }
    }
}

To do this, you need at first add the Windows Mobile Extensions for the UWP references in your project.

Here is

private void CreateNewKeyView_BackRequested(object sender, BackRequestedEventArgs e) //event handle nya untuk backbutton
        {
            var frame = ((Frame)Window.Current.Content);
            if (frame.CanGoBack)
            {
                frame.GoBack();
                e.Handled = true;
            }

        }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM