Comment afficher le bouton «haut» / «retour» dans Xamarin.Forms?

Myrtille

J'essaie de déterminer comment afficher la flèche «vers le haut» dans Xamarin.Forms sans pousser une page sur la pile. IE Je veux juste effectuer une action lorsque le bouton de retour est enfoncé. Je suis complètement coincé là-dessus, donc toute aide serait appréciée.

J'ai essayé de créer un moteur de rendu personnalisé qui gère une propriété de vue appelée DisplayHomeAsBack. Ce qui dans le moteur de rendu appelle ce qui suit:

FormsAppCompatActivity context = ((FormsAppCompatActivity)Forms.Context);
Android.Support.V7.App.ActionBar actionBar = context.SupportActionBar;
if (actionBar != null)
{
  actionBar.SetDisplayHomeAsUpEnabled(element.DisplayHomeAsBack);
}

Malheureusement, il semble que cela ne fasse absolument rien, même si tous les didacticiels en ligne et les questions de stackoverflow pour Android suggèrent cette méthode.

Le plan est que je puisse ensuite utiliser le remplacement "OnBackButtonPressed" dans MasterDetailPage, ce qui devrait me permettre d'effectuer cette action. Malheureusement, l'affichage du bouton de retour a été le plus gros obstacle jusqu'à présent!

Une idée d'une meilleure façon de faire cela ou comment je peux faire fonctionner le mécanisme actuel?

ÉDITER

J'ai créé un projet et l'ai chargé dans cette question sur les forums de support Xamarin, si cela peut aider. http://forums.xamarin.com/discussion/comment/186330#Comment_186330

hvaughan3

Désolé de vous avoir fait attendre si longtemps!

Attention, je n'ai pas réellement exécuté ce code et l'ai changé du mien donc je serais surpris qu'il fonctionne parfaitement sans quelques changements.

Donc, ci-dessous devrait ajouter un bouton de retour là où il n'y en avait pas auparavant (donc comme quand il n'y a pas vraiment de page vers laquelle revenir), puis nous ajouterons une action personnalisée à effectuer lorsque vous appuyez dessus.

Je vous suggère de pousser une nouvelle page sur la pile sans utiliser d'animation afin qu'elle soit transparente pour l'utilisateur et rend également tout cela beaucoup plus simple, mais si vous ne voulez absolument pas faire cela, la méthode ci-dessous devrait fonctionner.

Activité principale:

//Use this to subscribe to the event which will create the back button
public override bool OnCreateOptionsMenu(IMenu menu) {

    if(menu != null && App.AppMasterPage != null) { //You will need this to make sure you are on your MasterDetailPage, just store a global reference to it in the App class or where ever

        Xamarin.Forms.MessagingCenter.Unsubscribe<string>(this, "CreateBackButton");
        Xamarin.Forms.MessagingCenter.Subscribe<string>(this, "CreateBackButton", stringWeWillNotUse => { //Use this to subscribe to the event that creates the back button, then when you want the back button to show you just run Xamarin.Forms.MessagingCenter.Send<string>(this, "CreateBackButton")

            ActionBar.DisplayOptions = ActionBarDisplayOptions.ShowTitle | ActionBarDisplayOptions.ShowHome | ActionBarDisplayOptions.UseLogo | ActionBarDisplayOptions.HomeAsUp; //You may need to play with these options to get it working but the important one is 'HomeAsUp' which should add the back button
        });
    } else {
        Xamarin.Forms.MessagingCenter.Unsubscribe<string>(this, "CreateBackButton");
    }

    return base.OnCreateOptionsMenu(menu);
}

Maintenant, l'étape suivante consiste à effectuer une action personnalisée lorsque vous appuyez dessus. Je pense que vous pouvez remplacer OnBackPressed()ou OnOptionsItemSelected()dans MainActivityou vous pouvez peut - être remplacer la MasterDetailPageméthode. Je ne suis pas sûr.

Quel que soit celui qui fonctionne pour vous, à l'intérieur de ce remplacement, je vérifierais simplement si vous êtes sur votre App.AppMasterPagecomme nous l'avons fait ci-dessus, et si c'est le cas, envoyez un MessagingCentermessage auquel vous êtes App.AppMasterPagedéjà abonné afin qu'il gère l'action personnalisée .

Si vous êtes bloqué, faites-le moi savoir!

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Afficher le bouton «Retour au menu» dans la barre de navigation iOS avec Xamarin.Forms

Xamarin.Forms Comment désactiver le bouton Retour dans la barre de navigation

Xamarin Forms: comment masquer le titre du bouton retour?

Xamarin Forms - Afficher le bouton Annuler dans les éléments de la barre d'outils au lieu de Retour (iOS)

Comment afficher le bouton de retour dans l'activité

Android: comment afficher le bouton de retour pour une activité de haut niveau qui n'est pas non plus une activité de haut niveau?

Comment modifier le texte du bouton retour sur Xamarin.Forms

Comment afficher le bouton en haut de la table ?

Comment afficher le bouton de retour sur une page particulière dans Ionic

Comment masquer le "bouton Haut" dans le fragment supérieur et l'afficher dans d'autres fragments?

Comment remplacer le bouton «Retour» dans Flutter?

Comment masquer le bouton "retour" dans UINavigationController?

Afficher le bouton de retour dans la barre de navigation

Comment masquer le bouton de retour dans les formulaires Xamarin de la barre de navigation

Comment changer de page dans le shell Xamarin sans bouton de retour?

Comment masquer le bouton Annuler dans le sélecteur de date dans Xamarin.Forms

Comment afficher le bouton de retour manquant dans la vue Master-Detail1-Detail2 dans SwiftUI en paysage?

Faites défiler vers le haut, puis revenez sur le bouton Retour enfoncé dans Recyclerview

Comment lier la couleur du texte SwitchCell pour afficher le modèle dans Xamarin.Forms

Masquer le texte du bouton retour dans Xamarin

Comment utiliser le bouton «haut» dans la barre d'outils?

Lorsque vous appuyez sur le bouton de retour, listview va en haut. Comment régler ça ?

Comment définir WidthRequest = 50 sur le bouton dans Xamarin.Forms pour Windows Phone?

Comment supprimer le remplissage supplémentaire des vues de bouton dans Xamarin Forms pour Android?

Comment supprimer le bouton de zoom d'Azure B2C dans Xamarin Forms

Comment désactiver temporairement le bouton après un clic dans Xamarin Forms?

Comment faire un bouton de retour en haut qui apparaît simplement en faisant défiler vers le haut ?

Comment ajouter un bouton "retour en haut de page" dans R Shiny ?

Comment définir ListView pour commencer à afficher le dernier élément à la place dans Xamarin Forms?

TOP liste

  1. 1

    Microsoft.WebApplication.targets

  2. 2

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  3. 3

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  4. 4

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  5. 5

    Passer la taille d'un tableau 2D à une fonction ?

  6. 6

    Exporter la table de l'arborescence vers CSV avec mise en forme

  7. 7

    Impossible d'accéder à la vue personnalisée pendant le test de l'interface utilisateur dans XCode

  8. 8

    Créer un système Buzzer à l'aide de python

  9. 9

    Comment changer le navigateur par défaut en Microsoft Edge pour Jupyter Notebook sous Windows 10 ?

  10. 10

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  11. 11

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  12. 12

    CSS: before ne fonctionne pas sur certains éléments,: after fonctionne très bien

  13. 13

    Conversion double en BigDecimal en Java

  14. 14

    Comment obtenir l'intégration contextuelle d'une phrase dans une phrase à l'aide de BERT ?

  15. 15

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  16. 16

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  17. 17

    Comment créer un bot à compte à rebours dans Discord en utilisant Python

  18. 18

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  19. 19

    comment afficher un bouton au-dessus d'un autre élément ?

  20. 20

    Comment activer le message Pylint "too-many-locals" dans VS Code?

  21. 21

    Je continue à obtenir l'objet 'WSGIRequest' n'a pas d'attribut 'Get' sur django

chaudétiquette

Archive