2017-06-21 2 views
0

Y at-il un moyen dans Xamarin.Forms pour appuyer sur le bouton de retour du code? J'ai essayé d'appeler OnBackButtonPressed et SendBackButtonPressed mais cela ne fonctionne pas. L'événement OnBackButtonPressed est appelé mais l'action de retour ne fonctionne pas.Xamarin.Forms: Appuyez sur le bouton Retour du code

Appel OnBackButtonPressed:

if (_currentQuestionnaireGroup != null) 
    await RefreshDataAsync(); 
else 
{ 
    App.QuestionnaireOverviewPage.IsDirty = true; 
    this.OnBackButtonPressed(); 
} 

événement:

protected override bool OnBackButtonPressed() 
{ 
    if (_questionnaireHandler != null) 
     App.QuestionnaireOverviewPage.IsDirty = true; 

    return true; 
} 

Répondre

0

Désolé pour les pauvres anglais

Dans votre événement, changer return true; pour return base.OnBackButtonPressed();.

Lorsque vous renvoyez true, l'action 'back' est annulée sur le périphérique.

+0

Cela ne résout pas le problème. Votre solution fonctionne quand j'appuie sur le bouton de retour matériel sur android. Mais j'ai un bouton de retour personnalisé. Lorsque je clique sur ce bouton personnalisé et appelle simplement OnBackButtonPressed, l'action de retour n'est pas effectuée. Les deux ont atteint OnBackButtonPressed - Event mais seul le bouton de retour du matériel effectue la véritable action de retour. – OPunktSchmidt

+0

J'ai utilisé un Navigation.PopAsync() pour faire ceci, Si j'ai correctement pris en charge. Pouvez-vous poster votre code entier? Je vais essayer de simuler votre scénario ici et obtenir le tour. –

+0

Oui à utiliser Navigation.PopAsync() est le bon moyen et résout le problème. J'ai un peu d'expérience dans le développement android natif et là vous pouvez simplement appeler finish() ou onBackPressed() pour fermer la page actuelle. Dans Xamarin.Forms, vous devez appeler Navigation.PopAsync(). – OPunktSchmidt