android - tutorial - adjuntar onClickListener a ToggleButton
button en android studio (9)
Para agregarlo desde el código, puede hacer algo como:
yourButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
Sin embargo, también puede especificar en el XML para su botón, qué método desea asociar con la acción / evento onClick.
Tengo un ToggleButton y necesito configurar simples acciones de clic. ¿Cómo implemento un simple oyente de clic para un ToggleButton?
Si necesita detalles, pregunte.
Pruebe el método setOnCheckedChangeListener
de su clase ToggleButton
ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggleButton);
toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked) {
//
}
}) ;
Solo para agregar un punto que no se enfatiza en las otras respuestas: vincular programáticamente un manejador de clics es un poco pesado en el código de la placa base. Como se menciona en los documentos , solo es necesario en ciertos escenarios, como por ejemplo:
- Si ToggleButton se crea una instancia en tiempo de ejecución
- Si el comportamiento de clic se define en una subclase de Fragmento
Si ToggleButton se define en el diseño, es mucho más simple y más limpio vincular un método de control allí
<ToggleButton
android:id="@+id/togglebutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOn="On"
android:textOff="Off"
android:onClick="onToggleClicked"/>
Entonces solo el método del manejador debe definirse en la Actividad Java
public void onToggleClicked(View view) {
if(((ToggleButton) view).isChecked()) {
// handle toggle on
} else {
// handle toggle off
}
}
Tenga en cuenta que el método puede tener cualquier nombre, pero la firma debe cumplir estos criterios:
- Debe ser un método
public
- Debe devolver el
void
- Debe tomar un solo argumento de tipo
View
(esta será laView
que se hizo clic)
ToggleButton extiende View, por lo que simplemente puede usar View.setOnClickListener() , así:
// get your ToggleButton
ToggleButton b = (ToggleButton) findViewById(R.id.myButton);
// attach an OnClickListener
b.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// your click actions go here
}
});
Use View.setOnClickListener()
y compruebe el estado del botón.
final ToggleButton tB = (ToggleButton) findViewById(R.id.toggleButton1);
tB.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if(tB.isChecked()){
//Button is ON
// Do Something
}
else
//Button is OFF
// Do Something
}
});
si los códigos anteriores no funcionan, intente
b.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// your click actions go here
}
});
this.someToggleButton = (ToggleButton)findViewById(R.id.someToggleButton) ;
this.someToggleButton.setOnCheckedChangeListener( new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked) {
doSomethingWith(toggleButton, isChecked) ;
}
}) ;
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
Toast.makeText(getApplicationContext(),"on",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(getApplicationContext(),"off",Toast.LENGTH_SHORT).show();
}
}`enter code here`
mTB = (ToggleButton) findViewById(R.id.toggleButton1);
mTB.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View v)
{
// Is the toggle on?
boolean on = ((ToggleButton) v).isChecked();
if (on) {
// Enable here
} else {
// Disable here
}
}
});