为什么,toggleButton在设置为false时没有执行任务?

时间:2015-03-05 19:08:16

标签: android android-layout android-activity android-fragments android-togglebutton

我的应用程序中有一些切换按钮,我在第一次运行时将切换按钮的状态设置为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());
    }

  }


 });

1 个答案:

答案 0 :(得分:0)

一旦定义了onCreateMethod中的切换按钮,就设置OncheckedChangedListener()。我认为您正在为XML文件中的切换按钮定义onClick。这里有一个逻辑错误,因为在第一次单击按钮时,您正在设置监听器。因此,从下一次开始,它按预期工作,但不是第一次起作用。要解决这个问题:

  • 为其中的切换按钮设置OnCheckedChangedListener() onCreate()方法。
  • 删除XML中的onClick()定义 也可以摆脱getStatus()方法

要在许多切换按钮上实现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 - 只有这样才能使用它们。