nil*_*ila 13 android android-togglebutton
我有十个切换按钮.我想在单击主页按钮时保存其中五个按钮的状态.但我想保存它只有当用户对任何按钮的状态进行了更改时.有没有办法在不使用setOnClickListener()的情况下知道状态的变化?
syd*_*ydd 30
我做了以下,它不太好,但它的工作原理:
ttsButton = (ToggleButton) findViewById(R.id.solution_ttsbutton);
ttsButton.setOnCheckedChangeListener(toggleButtonChangeListener);
...
// gets called, if the button state changes
final CompoundButton.OnCheckedChangeListener toggleButtonChangeListener = new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// The user changed the button, do something
}
};
Run Code Online (Sandbox Code Playgroud)
如果我想以编程方式更改按钮而不执行更改侦听器,则执行以下操作:
ttsButton.setOnCheckedChangeListener(null);
ttsButton.setChecked(false);
ttsButton.setOnCheckedChangeListener(toggleButtonChangeListener);
Run Code Online (Sandbox Code Playgroud)
Mic*_*ael 15
使用CompoundButton.OnCheckedChangeListener课程.
ToggleButton button = /* ... */;
button.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
// Save the state here
}
});
Run Code Online (Sandbox Code Playgroud)
编辑:如果你想使用一个监听器:
CompoundButton.OnCheckedChangeListener listener =
new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
String key = null;
switch(buttonView.getId()) {
case R.id.button1:
key = "key1";
break;
case R.id.button2:
key = "key2";
break;
default:
return;
}
// Save the state here using key
}
});
ToggleButton button1 = /* ... */;
button1.setOnCheckedChangeListener(listener);
ToggleButton button2 = /* ... */;
button2.setOnCheckedChangeListener(listener);
Run Code Online (Sandbox Code Playgroud)
但是有很多方法可以真正实现这一点.因此,您可以构建另一种更适合您需求的方法.
有一种简单的方法可以知道用户是否单击了CompoundButton(CheckBox,Switch,RadioButton,ToggleButton),使用以下命令:
new CompoundButton.OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton compoundButton, boolean checked) {
if (compoundButton.isPressed()) {
// do something related to user click/tap
} else {
// do something related to programmatically state changes (checked/unchecked)
}
}
}
| 归档时间: |
|
| 查看次数: |
19597 次 |
| 最近记录: |