У меня есть ToggleButton, и мне нужно настроить простые действия щелчка. Как реализовать простой клик для ToggleButton?
Если вам нужны детали, пожалуйста, спросите.
У меня есть ToggleButton, и мне нужно настроить простые действия щелчка. Как реализовать простой клик для ToggleButton?
Если вам нужны детали, пожалуйста, спросите.
ToggleButton расширяет представление, поэтому вы можете просто использовать View.setOnClickListener(), например:
// 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
}
});
this.someToggleButton = (ToggleButton)findViewById(R.id.someToggleButton) ;
this.someToggleButton.setOnCheckedChangeListener( new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked) {
doSomethingWith(toggleButton, isChecked) ;
}
}) ;
Используйте View.setOnClickListener()
и проверьте состояние кнопки.
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
}
});
Просто добавьте точку, не подчеркнутую в других ответах, - программная привязка обработчика кликов немного тяжела для кода bolierplate. Как упоминалось в документах, это необходимо только в определенных сценариях, таких как:
Если ToggleButton определен в макете, намного проще и чище привязать метод обработчика
<ToggleButton
android:id="@+id/togglebutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOn="On"
android:textOff="Off"
android:onClick="onToggleClicked"/>
Тогда только метод обработчика должен быть определен в Activity Java
public void onToggleClicked(View view) {
if(((ToggleButton) view).isChecked()) {
// handle toggle on
} else {
// handle toggle off
}
}
Обратите внимание, что метод может иметь любое имя, но подпись должна соответствовать этим критериям:
public
void
View
(это будет нажатие View
)Чтобы добавить его из кода, вы можете сделать что-то вроде:
yourButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
Однако вы также можете указать в XML для своей кнопки, какой метод вы хотите связать с действием/событием onClick.
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
}
}
});
@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`
если выше коды не работают, попробуйте
b.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
// your click actions go here
}
});
Попробуйте setOnCheckedChangeListener
метод ToggleButton класс
ToggleButton toggleButton = (ToggleButton) findViewById(R.id.toggleButton);
toggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton toggleButton, boolean isChecked) {
//
}
}) ;