2016-03-01 3 views
0

J'essaie d'utiliser un écouteur de clic long sur un Toggle Button pour verrouiller/déverrouiller l'action de clic normal du bouton (pour éviter un clic accidentel). Le code ci-dessous semble n'avoir aucun effet. J'ai essayé .isActivated, .isCickable et .isEnabled propriétés sans chance ... Est-ce possible?OnLongClickListener pour verrouiller/déverrouiller Opération de bouton bascule

final ToggleButton btnStartStop = (ToggleButton) findViewById(R.id.toggleAction); 
    btnStartStop.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      // TODO Auto-generated method stub 
      if (btnStartStop.isActivated()) { 
       btnStartStop.setActivated(false); 
      } else { 
       btnStartStop.setActivated(true); 
      } 
      return true; 
     } 
    }); 
+0

pourquoi utilisez-vous à long clic. vous pouvez utiliser un seul clic ou setOnCheckedChangeListener –

Répondre

0

Peut-être utiliser un booléen?

Boolean longPress = false; 

final ToggleButton btnStartStop = (ToggleButton) findViewById(R.id.toggleAction); 
btnStartStop.setOnLongClickListener(new View.OnLongClickListener() { 
    @Override 
    public boolean onLongClick(View v) { 
     // TODO Auto-generated method stub 
     if (longPress) { 
      longPress = false; 
     } else { 
      longPress = true; 
     } 
     return true; 
    } 
}); 

et onClick():

btnStartStop.setOnClickListener(new View.OnClickListener() { 

    @Override 
    public void onClick(View v) { 

    if(!longPress){ 
     //Do stuff 
    } 
    else{ 
     Toast.makeText(getApplicationContext(), "Button is locked!\nLong press button to unlock it",Toast.LENGTH_SHORT).show(); 
    } 
}); 
0

Vous devez changer votre extrait comme

final ToggleButton btnStartStop = (ToggleButton) findViewById(R.id.toggleAction);   btnStartStop.setOnLongClickListener(new View.OnLongClickListener() { 
     @Override 
     public boolean onLongClick(View v) { 
      // TODO Auto-generated method stub 
      if (togglePref.isChecked()==(true)) 
      { 

      // button is checked 

      } 

      else 
       { 

       // button is unchecked 

       } 

      return true; 
     } 
    }); 
+0

Comment ces méthodes Verrouiller/Déverrouiller l'utilisation du bouton bascule? C'est ma principale exigence. Je veux utiliser l'événement clic long pour activer/désactiver l'opération de clic normal du même bouton. –

+0

@ChrisKing Je n'ai pas compris votre question. S'il vous plaît soyez plus précis –