2010-07-30 5 views
3

Lors de la création d'une activité, nous nous connectons à un système distant et téléchargeons des données. Nous affichons un ProgressDialog annulable à l'utilisateur tout ce temps. Le téléchargement est fait en utilisant AsyncTask. Dans preExecute(), nous montrons le dialogue et dans postExecute() nous le rejetons.ProgressDialog disparaît lorsque vous appuyez sur la touche "Recherche" du téléphone

Le problème est que lorsque le téléchargement est en cours et que ProgressDialog est affiché, si l'utilisateur appuie sur le bouton "search" de l'appareil, le ProgressDialog disparaît. Le thread d'arrière-plan est toujours en cours d'exécution.

Ce qui cause ce problème? Comment cela peut-il être évité?

Aidez-nous s'il vous plaît.

merci.

Répondre

0

Cela devrait corriger cela fonctionne (avis je l'ai mis sur le constructeur de dialogue):

.setOnKeyListener(new DialogInterface.OnKeyListener() { 

    @Override 
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_SEARCH && event.getRepeatCount() == 0) { 
      return true; // Pretend we processed it 
     } 
     return false; // Any other keys are still processed as normal 
    } 
}) 

Peut-être il est même possible de saisir les presses bouton positives et négatives, et ne gérer ceux-ci, return true pour toutes les autres clés. Je serais curieux si vous pouvez comprendre cela ...

PS: J'ai lu qu'il y a plus de "trous" dans la boîte de dialogue, c'est-à-dire que vous pouvez vous en débarrasser sans toucher aucun bouton de la boîte de dialogue elle-même. C'était apparemment un. Est-ce que quelqu'un en connaît d'autres?

PS2: cela semble une répétition de Prevent ProgressDialog from being dismissed when I click the search button (Android)

+0

Je pensais qu'il y aurait un raccourci (comme une propriété) d'y parvenir. Quoi qu'il en soit, merci beaucoup! – Samuh

Questions connexes