ici il y a une partie de l'activité où l'orientation de l'écran change: apparemment semble que la boîte de dialogue apparaissant à l'intérieur de la boîte de dialogue devrait apparaître juste après l'OnlongClick sur l'ONLONGCLICK
(Je sais que lorsque l'orientation de l'écran change l'activité est redémarré, mais cela ne devrait pas commencer normalement comme la première fois créé?) P> Mon problème:
Lorsque j'ouvre au moins une fois la boîte de dialogue et je le ferme, après le changement d'orientation de l'écran, j'ai à nouveau affiché la boîte de dialogue sur l'écran, comme si j'ai cliqué sur l'Edittext. P> Je ne sais pas absolument Pourquoi cela se produit. p> i attachez également la structure du fragment de dialogue: p> merci beaucoup pour l'aide. P> P>
3 Réponses :
Lorsqu'un changement de configuration (comme la rotation) se produit, l'ancien fragment n'est pas détruit - il s'ajoute simplement à l'activité lorsqu'il est recréé (Android conserve des fragments par défaut). Donc, si vous avez votre boîte de dialogue code> affichée avant la rotation, il apparaît instantanément après la rotation. P>
Non, je n'ai pas le dialogue de dialogue illustré avant la rotation. Il apparaît à nouveau lorsque l'écran est tourné s'il a été ouvert et fermé une fois la fois.
Mais vous avez dit ci-dessus, que "si je fais pivoter l'écran avant d'ouvrir la boîte de dialogue, rien ne se passe". Où est l'erreur?
Il y a deux cas: 1) Je ne suis pas surlongclick jamais l'editext 2) I Onlongclick l'Edittext au moins une fois. Dans le premier cas, lorsque l'orientation de l'écran modifie la boîte de dialogue n'apparaît pas. Dans le second cas, lorsque la boîte de dialogue est déjà fermée en cliquant sur le bouton OK qui produisent la boîte de dialogue.DISMISS (), lorsque l'orientation de l'écran change de manière magique la boîte de dialogue (comme si j'envoie si j'envoie ONLONGCLICK The Editext)
Essayez de supprimer la boîte de dialogue de Stack à l'aide de Fragment Manager au lieu de le renvoyer. P>
Au fait, au lieu d'utiliser simplement un fragment code> code> pour votre boîte de dialogue, vous devez utiliser Aussi, n'appelez jamais vos méthodes d'activité telles que celles-ci ( getfragmentmanager (). Begintransaction (). Supprimer (dialogment.C'est) .Commouver (); code> p> p>
Dialogmentfragment code> lui-même. Checkout: Dialogmentfragment strong> P>
((((((principale) getactivité ()). Setextonedittext (TextDialog);
code> sauf si votre fragment est une classe interne statique. Au lieu de cela, créez une interface
code> pour parler entre fragments et activité. p>
Je peux confirmer que cette méthode fonctionne, mais dans ma situation, j'ai rencontré ce problème simplement parce que j'ai oublié d'inclure cette ligne: super.ondismiss (boîte de dialogue); code> dans
Ondismiss code> méthode. Peut-être que cela aidera quelqu'un.
Super commentaire - Comme pour moi, la réponse de Jabbar a entraîné une erreur Java.lang.illegalStateException: ne peut pas effectuer cette action après OnsaveInstancestate Code>
@ Ban-Geoengineering, il n'est pas lié à ma réponse. Vous appelez probablement commettez code> lorsque l'activité n'est pas à l'état repris. Si vous appelez que pendant
OnActiVIVIVIVIVIVERSULT CODE>, ne le faites pas là-bas, assurez-vous d'appeler cela seulement après la reprise d'activité
Lorsque l'écran change d'orientation, il appelle la méthode OnSaveInstanCetate et enregistre l'état dans l'objet de l'ensemble, y compris la pile. Si vous renvoyez la boîte de dialogue sans effacer cette pile, elle affichera ensuite la boîte de dialogue lorsque vous faites pivoter le téléphone car il s'agit de l'ensemble de SaveInstanCetate.
Vous devez effacer la boîte de dialogue de la pile avec: p>
getActivity().getFragmentManager().beginTransaction().remove(this).commit();
Donc, vous démarrez l'activité, ne faites rien, faites pivoter le périphérique et la boîte de dialogue apparaît ou vous démarrez Activity, cliquez sur EditText, faites-la pivoter le périphérique ...?
Êtes-vous sûr que votre activité est redémarrée en rotation? Avez-vous ajouté un code qui peut empêcher l'activité de redémarrer? Comme la configuration change de manifeste?
@nikis Non, désolé, si je fais pivoter l'écran avant d'ouvrir la boîte de dialogue, rien ne se passe.
@Injhb Je pense être redémarré, mais j'ai également essayé de mettre Android: configchange = "Orientation" dans les manifestes mais les mêmes résultats!
@ GASTA87 Eh bien, si vous mettez des configuisages et remplacez la méthode, l'activité ne sera pas redémarrée. C'était mon point
@Injhb j'ai mis un échantillon vidéo dans gdrive! Ici c'est: Lien
Peut-être faire fragment1 une variable globale et la définir à NULL un peu de temps après l'avoir renvoyé par l'utilisateur.