Prévenir Android dialogue activité de clôture sur l'extérieur touch
J'ai une activité qui utilise le Thème.Boîte de dialogue style de sorte qu'il est une fenêtre flottante sur une autre activité. Cependant, lorsque je clique sur l'extérieur de la fenêtre de dialogue (sur l'arrière-plan de l'activité), la boîte de dialogue se ferme. Comment puis-je arrêter ce comportement?
- Pourquoi voudriez-vous faire btw. SI le comportement que vous voulez est d'une boîte de dialogue, pourquoi ne pas utiliser une boîte de dialogue? Pour en venir à votre question, je ne pense pas qu'il y a une solution à cela.
- les dialogues sont limités quand il s'agit de la disposition des personnalisations...c'est pourquoi une activité. Même le développeur docs recommande cette approche pour une personnalisation flexible
- Et ce que l'OP veut, c'est un Modal boîte de dialogue, c'est à dire une boîte de dialogue qui oblige l'utilisateur à répondre, comme OK ou Oui/Non. L'utilisateur ne doit pas être en mesure de simplement cliquer.
Vous devez vous connecter pour publier un commentaire.
Cela pourrait vous aider. C'est une façon de gérer le contact en dehors de l'événement:
Comment annuler un Dialogue sur le thème d'une Activité lors d'un contact à l'extérieur de la fenêtre?
Par la capture de l'événement et de ne rien faire, je pense que vous pouvez empêcher la fermeture. Mais ce qui est étrange, c'est que le comportement par défaut de votre activité de la boîte de dialogue devrait être pas de se fermer lorsque vous touchez à l'extérieur.
(PS: le code utilise WindowManager.LayoutParams)
Pour empêcher la boîte de dialogue d'obtenir rejetée sur la touche retour enfoncée utiliser cette
Et à prévenir la boîte de dialogue d'obtenir rejeté à l'extérieur touchez utiliser cette
AlertDialog
de fermeture de contact à l'extérieur, et c'est ce que cette réponse fournit.setCancelable(false)
DialogFragment
, merci. Comme @KobiTate mentionné, vous avez seulement besoin d'utiliserfragment.setCancelable(false)
. Ma requête de recherche: android arrêter, cliquez à l'extérieur de la boîte de dialogueCe que vous avez réellement besoin est une Activité (même si elle ressemble à une boîte de Dialogue), donc vous devriez appeler
setFinishOnTouchOutside(false)
de votre activité si vous voulez garder ouvert lors de l'activité de fond est cliqué.EDIT: Cela ne fonctionne qu'avec l'API android de niveau 11 ou plus
onBackPressed()
de ne rien faire dans son corpsCe qui a fonctionné pour moi a été de créer
DialogFragment
un jeu pour ne pas être annulable:Supérieur de l'API de 10, la boîte de Dialogue disparaît lorsque sur touché à l'extérieur, tandis que dans le bas de l'API 11, la boîte de Dialogue ne disparaît pas. Pour éviter cela, vous devez faire:
Dans
styles.xml
:<item name="android:windowCloseOnTouchOutside">false</item>
OU
Dans
onCreate()
méthode, utilisation:this.setFinishOnTouchOutside(false);
Remarque: pour les API de 10 et plus bas, cette méthode ne prend pas effet et n'est pas nécessaire.
Lors de l'utilisation de la boîte de dialogue de l'activité dans le onCreate ajouter cette
Utiliser Ce Code, il Travaille Pour moi
Réglage de la boîte de dialogue annulable faux est assez, et vous touchez à l'extérieur de la boîte de dialogue d'alerte ou cliquez sur le bouton précédent permet de faire de la boîte de dialogue alerte de disparaître. Afin d'utiliser celui-ci:
setCancelable(false)
Et d'autres fonctions, n'est plus nécessaire:
dialog.setCanceledOnTouchOutside(false);
Si vous créez une boîte de dialogue temporaire et vous demandez-vous là pour mettre cette ligne de code, voici un exemple:
Simplement,
empêcher l'utilisateur de cliquer à l'extérieur de la Boîte de Dialogue.
Regarder ce lien pour plus de détails sur la boîte de dialogue.
Utilisation
setFinishOnTouchOutside(false)
pour API > le 11 et ne vous inquiétez pas parce que son android comportement par défaut de cette activité sur le thème de dialogue ne se fini sur l'extérieur de toucher pour l'API < 11 🙂 !!Cheerss!!- Je l'utiliser dans onCreate(), semble fonctionner sur n'importe quelle version d'Android; testé sur 5.0 et 4.4.x, ne peut pas tester sur pain d'épice, des appareils Samsung (Note 1 GO) ont de cette façon par défaut:
Je suppose que cela va vous aider.Il a Travaillé Pour moi
Voici ma solution:
Est également possible d'attribuer différentes de l'action la mise en œuvre de onCancelListener:
J'ai été confrontée au même problème. Pour gérer cela j'ai mis un
OntouchListener
à la boîte de dialogue et de ne rien faire à l'intérieur. Mais le Dialogue rejeter lors de la rotation de l'écran aussi. Pour le fixer, j'définir une variable pour me dire si la boîte de dialogue a normalement rejeté. Puis j'ai mis unOnDismissListener
de mon dialogue et à l'intérieur j'ai vérifier la variable. Si la boîte de dialogue a dismmiss normalement je n'ai rien, ou alors j'ai lancer la boîte de dialogue nouveau (et la définition de son état, lors du rejet dans mon cas).builder.setCancelable(false);
public void Mensaje(View v){
C'est la réponse parfaite à toutes vos questions.... Espérons que vous apprécierez le codage en Android