Utilisez DialogFragment pour valider l'entrée utilisateur

pixel

J'ai un FragmentA qui a le bouton DoSomething et un auditeur qui est ActivityA. FragmentA définit également une InterfaceA avec la méthode doSomething () en elle.

ActivityA implémente InterfaceA et comme ci-dessous montre FragmentA (avec son bouton DoSomething dessus).

C'est le code derrière l'implémentation des boutons DoSomething cliquez dans l'écouteur ActivityA:

@Override
public void doSomething(View v) {
  if (hasRight == false){
    // doShowPINDialogFragment just creates and shows PINDialogFragment
    // as per code below.
    // Question 1: How to make doShowPINDialogFragment() return boolean?
    if (doShowPINDialogFragment() == false){ 
        return;
    }
  }

  // If I put break point here, I would expect to see my dialog fragment
  // created in doShowPINDialogFragment() call above but I dont.
  // I see fragment B loaded (replacing FragmentA), then my
  // PINDialogFragment shows on top of it. 
  // Question 2: How to prevent loading fragment B before user enters
  // correct PIN?
  loadFragmentB();  

}

La méthode doShowPINDialogFragment () créera simplement et "affichera" le fragment:

public void doShowPINDialogFragment(String a){
    FragmentTransaction ft = getFragmentManager().beginTransaction();
    Fragment prev = getFragmentManager().findFragmentByTag("doShowPINDialogFragment");
    if (prev != null){
        ft.remove(prev);
    }
    ft.addToBackStack(null);
    PINDialogFragment pinDialogFragment = PINDialogFragment.newInstance(a);
    pinDialogFragment.show(ft, "doShowPINDialogFragment");
}

Le problème est qu'Android ne bloquera pas lors de l'affichage d'une boîte de dialogue (comme dans le cas de ModalDialog en C #). En conséquence, la méthode ci-dessus s'exécutera complètement avant d'afficher mon PINDialogFragment. Je voudrais empêcher l'appel à loadFragmentB () mais l'appeler uniquement lorsque PINDialogFragment retourne true.

Mon problème est que je ne sais pas 2 choses:

  1. Comment faire ci-dessus doShowPINDialogFragment () renvoyer vrai ou faux?

  2. Comment empêcher l'appel à loadFragmentB () si doShowPINDialogFragment () retourne false?

Je pensais qu'écrire quelque chose comme ça résoudrait mes 2 problèmes:

@Override
public void doSomething(View v) {
  if (hasRight == false){
    if (doShowPINDialogFragment() == false){ 
        return;
    } else {
      loadFragmentB();
    }
  }
}

Très appréciée.

pixel

Je l'ai compris.

Au lieu de l'écrire comme ci-dessus, faites ceci:

@Override
public void doSomething(View v) {
  if (hasRight == false){
    doShowPINDialogFragment();
  } else {
    loadFragmentB(); 
  } 
}

De cette façon, vous ne chargezFragmentB que lorsque hasRight! = False. Si false cependant, vous appelez doShowPINDialogFragment () qui crée et affiche le fragment de dialogue comme expliqué ci-dessus.

Il définit également l'interface avec un rappel qui s'exécute ensuite dans le même fichier java que le code ci-dessus. Ce rappel se déclenche sur un clic positif sur le bouton et appellera également loadFragmentB ().

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

Utilisation de RegEx pour valider l'entrée utilisateur

Laravel - valider l'entrée utilisateur pour une valeur unique

Vous utilisez une boucle pour valider les entrées sur le formulaire utilisateur Excel?

Python 3 - 'While loop' pour valider que l'entrée utilisateur est comprise entre 2 nombres

comment créer une méthode pour valider l'entrée utilisateur entre une certaine plage

ansible: failed_when ne fonctionne pas pour valider l'entrée utilisateur

Valider l'entrée pour le mois

Utilisez write () pour écrire char * dans le fichier à partir de l'entrée utilisateur

Utilisez l'interface utilisateur jquery pour formater l'entrée, mais obtenez des valeurs brutes pour le calcul

Comment utiliser le bloc try-except pour valider l'entrée et utiliser une instruction while pour inviter l'utilisateur à obtenir une entrée valide en Python?

comment valider l'entrée utilisateur avec javascript

Valider l'entrée utilisateur avec des espaces

impossible de valider l'entrée utilisateur en javascript

Valider l'entrée utilisateur de copier-coller interrompu

Swift: valider l'entrée du nom d'utilisateur

Est-il possible d'utiliser des liaisons ReactiveUI dans WPF pour valider l'entrée utilisateur avec uniquement INotifyDataErrorInfo?

Utilisez une expression régulière personnalisée pour valider l'url linkedIn

Quelle méthode d'expression régulière est la meilleure pour valider l'entrée de l'utilisateur ? (pour /f avec delims vs echo %var%|Findstr /ri)

regex pour valider l'entrée C 200 50

Valider l'entrée datetime pour la planification

Valider l'entrée de l'utilisateur pour prendre des caractères et des nombres à l'aide d'une expression régulière ne fonctionne pas

utilisez l'option ForceReply pour obtenir l'entrée de l'utilisateur sans interface de réponse dans le télégramme

Pourquoi ma fonction de validation ne fonctionne-t-elle pas (pour valider si l'entrée de l'utilisateur est un entier compris dans la plage)

Comment utiliser le scanner hasNext () pour parcourir une ligne de texte du clavier et valider l'entrée utilisateur de l'entier et de la chaîne

Utilisez la pile pour vérifier toute parenthèse déséquilibrée sur l'entrée de l'utilisateur en Python

Utilisez Enter Keydown Event pour passer à l'entrée suivante

Requête d'accès: utilisez l'entrée utilisateur pour sélectionner la colonne pour la requête dans SQL

Nœud rouge - utilisez un port différent pour les nœuds d'entrée http que pour l'interface utilisateur

Valider l'entrée de l'utilisateur lors de l'assemblage?

TOP liste

  1. 1

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

  2. 2

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

  3. 3

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

  4. 4

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

  5. 5

    Conversion double en BigDecimal en Java

  6. 6

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

  7. 7

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

  8. 8

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

  9. 9

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

  10. 10

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

  11. 11

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

  12. 12

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

  13. 13

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

  14. 14

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

  15. 15

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

  16. 16

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

  17. 17

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  18. 18

    Empêcher l'allocation de mémoire dans la génération de combinaison récursive

  19. 19

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  20. 20

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

  21. 21

    Microsoft.WebApplication.targets

chaudétiquette

Archive