我的应用程序中有一些切换按钮,我在第一次运行时将切换按钮的状态设置为true。问题是,当我尝试设置false(按钮关闭)时,它显示它将其状态更改为false,但关闭时执行的操作未执行。当我再次单击该按钮打开和关闭时,该按钮将再次打开和关闭,然后执行时执行的操作关闭按钮将正确执行。我不知道第一次发生了什么?有人可以帮我找出这个代码的问题???请原谅我的语言。
在这里,我将粘贴此问题的示例代码
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ToggleButton tb1=(ToggleButton)findViewById(R.id.toggleButton1);
tb1.setChecked(true);
}
public void getStatus(View view)
{
final ToggleButton tb1=(ToggleButton)findViewById(R.id.toggleButton1);
tb1.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
try
{
if(isChecked== false)
{
Toast.makeText(getApplicationContext(), "Switch off", Toast.LENGTH_LONG).show();
//Toast.makeText(getApplicationContext(), "Switch on", Toast.LENGTH_LONG).show();
}
}
catch(Exception e)
{
Log.e("switchfailed",e.toString());
}
}
});
答案 0 :(得分:0)
一旦定义了onCreateMethod中的切换按钮,就设置OncheckedChangedListener()。我认为您正在为XML文件中的切换按钮定义onClick。这里有一个逻辑错误,因为在第一次单击按钮时,您正在设置监听器。因此,从下一次开始,它按预期工作,但不是第一次起作用。要解决这个问题:
要在许多切换按钮上实现OnCheckedChangedListener,请使您的活动实现OnCheckedChangedListener。然后,您可以按如下方式覆盖onCheckedChanged()方法:
@Override
public void onCheckedChanged(CompundButton button, boolean isChecked) {
if(button.getId() == R.id.toggle1) // The id for your button
// do what you'd need for toggle1
else if(button.getId() == R.id.toggle2)
// do what you'd need for toggle2
else
// do something
}
您可以直接使用上面的代码段(但是您拥有与您拥有的按钮一样多的情况)。您也可以使用switch语句。别忘了为所有按钮指定一个id - 只有这样才能使用它们。