【问题标题】:Why ,toggleButton is not performing its task when it is set to false?为什么 ,toggleButton 在设置为 false 时不执行其任务?
【发布时间】:2015-03-05 19:08:16
【问题描述】:

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

  }


 });

【问题讨论】:

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


    【解决方案1】:

    在定义 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
    }
    

    您可以直接使用上面的代码 sn-p (但您将拥有与您拥有的按钮一样多的案例)。您也可以改用 switch 语句。不要忘记为所有按钮指定一个 id - 只有这样你才能使用它们。

    【讨论】:

    • ,感谢支持,它正在工作。有没有其他方法可以检查切换按钮,而不是在 onCreate 方法中设置 OnCheckedChangedListener()?我的应用程序中有 50 个切换按钮,我将所有按钮的初始值设置为 true,当用户将其更改为 false 时,我想将按钮设置为 false
    • 您可以做的是使您的活动(或视图被膨胀的片段)实现 OnCheckedChangedListener。然后你必须实现 onCheckedChanged 方法。您可以使用编辑我的答案中显示的方法。
    • 查看代码编辑。这个 sn-p 应该可以帮助您完成任务
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-10
    • 1970-01-01
    • 2019-12-26
    • 2018-01-09
    相关资源
    最近更新 更多