1

J'ai implémenté le bouton onLongClickListener dans Android Dialog qui réduit automatiquement le nombre en utilisant les minuteurs. Voici le codeonTouchEvent dans le dialogue

myIncreaseTimer = new Timer(); 
final Runnable runnable_decrease = new Runnable() { 
    public void run() { 
     int txt = Integer.parseInt(length.getText().toString()); 
     txt -= 1; 
     length.setText(String.valueOf(txt)); 
     if (txt == 0) { 
      myIncreaseTimer.cancel(); 
      myIncreaseTimer.purge(); 
      myIncreaseTimer = new Timer(); 
     } 
    } 
}; 
btnMinus.setOnLongClickListener(new View.OnLongClickListener() { 
    public boolean onLongClick(View v) { 
     myIncreaseTimer.schedule(new TimerTask() { 
      @Override 
      public void run() { 
       runOnUiThread(runnable_decrease); 
      } 
     }, 0, 300); 
     return true; 
    } 
}); 

Quand je suis à l'intérieur de l'activité, pas de dialogue, je peux arrêter la diminution par onTouchEvent lorsqu'un utilisateur touche l'écran

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    if (event.getAction() == MotionEvent.ACTION_UP) { 
     myIncreaseTimer.cancel(); 
     myIncreaseTimer.purge(); 
     myIncreaseTimer = new Timer(); 
    } 
    return true; 
} 

Cependant, je ne peux pas le faire dans la boîte de dialogue . Plus encore, la boîte de dialogue n'a pas onTouchEvent.

Est-ce que quelqu'un sait comment puis-je mettre en œuvre onTouchEvent dans Dialog ou où dois-je arrêter le minuteur d'augmentation dans le Dialog?

Répondre

4

Vous ne pouvez pas gérer OnTouch sur Dialog si

Créer une activité, mettre en œuvre onTouchListener sur elle, et dans le fichier manifeste

<activity android:theme="@android:style/Theme.Dialog"> 

Donc, maintenant votre activité est ressembler à un DialogBox ,

+0

Mais assurez-vous d'étendre Activity, pas AppcompctActivity et un autre pense que je veux ajouter ici. Si nous définissons syle android: style/Theme.Dialog. Le titre de l'activité s'affichera. Si vous voulez le supprimer utilisez android: style/Theme.Holo.Dialog.NoActionBar –

2

car Dialog n'est pas conçu pour gérer les onTouchEvents bruts. pensez à créer une activité qui ressemble à une boîte de dialogue (thème transparent, pas de barre de titre) et remplacez la méthode onTouchEvent.

Questions connexes