2013-04-06 5 views
-2

Au clic d'un bouton, je souhaite ouvrir une boîte de dialogue. Dans cette boîte de dialogue, je veux définir le texte dynamiquement (un peu comme un chronomètre) avec le texte qui viendra par une boucle. Quelqu'un pourrait-il me guider avec un exemple de code? J'ai essayé de nombreux exemples donnés sur le net mais je n'ai pas réussi à atteindre le résultat.Utilisation d'une tâche asynchrone Android

//Button where the action starts 
public void onClickStart(View v) { 
    final Dialog dialog = new Dialog(MainActivity.this); 
    dialog.setContentView(R.layout.activity_details); 
    dialog.setTitle("Your Step Details"); 
    dialog.show(); 
    DisplayTask dd= new DisplayTask(); 
    dd.execute(); 
} 

public void doWork(){ 
     final Handler handler=new Handler(); 
     new Thread(new Runnable(){ 
      boolean isRunning=true; 
      @Override 
      public void run() { 
       while(isRunning){ 
        try{ 
         handler.post(new Runnable(){ 

          @Override 
          public void run() { 
           try{ 
            TextView txtCurrentTime= (TextView)findViewById(R.id.txtLeft); 
             Date dt = new Date(); 
             int hours = dt.getHours(); 
             int minutes = dt.getMinutes(); 
             int seconds = dt.getSeconds(); 
             String curTime = hours + ":" + minutes + ":" + seconds; 
             txtCurrentTime.setText(curTime); 
           }catch (Exception e) {} 

          } 

         }); 
        }catch(Exception e){ 

        } 
       } 

      } 

     }).start(); 
    } 



public class DisplayTask extends AsyncTask<Void , Void, Void> { 


    protected void onPostExecute(){ 
     MainActivity main= new Mai`enter code here`nActivity(); 
     main.doWork(); 
    } 

    @Override 
    protected Void doInBackground(Void... params) { 
     onPostExecute(); 
     return null; 
    } 
} 
+1

Ce que vous avez essayé - – minhaz

+0

En cliquant sur le bouton, j'ai appelé une méthode. Là, j'ai ouvert ma boîte de dialogue. Cette boîte de dialogue a deux zones de texte. Je veux mettre le texte avec un texte dynamique (disons le temps). J'ai créé une classe asyncTask et à partir de onPostExecute(), j'ai appelé la méthode où je mettais à jour le textBox. Mais cela ne fonctionne pas – DebD

+0

Pouvez-vous poster votre code? Ensuite, nous pourrions être en mesure de voir ce que vous avez mal fait. – Jules

Répondre

0

Si vous voulez faire quelque chose sur une minuterie, AsyncTask n'est pas la bonne méthode. Utilisez un gestionnaire et publiez un message à l'aide de postMessageDelayed. Cela vous permettra de faire quelque chose en quelques millisecondes/secondes, mais cela se produira sur le thread de l'interface utilisateur.

+0

Je ne veux pas la minuterie. En fait, je veux que cette zone de texte affiche quelque chose qui sera interrogé à partir de ma base de données. BUt qui devrait être affiché dans la boîte de dialogue comme ma boîte de dialogue contient la zone de texte. – DebD

+0

Il ne vous reste plus qu'à appeler setText dans la fenêtre de dialogue. Assurez-vous que c'est fait sur le fil de l'interface utilisateur. –

Questions connexes