切换按钮可在第二次点击时使用-Android

时间:2018-08-30 22:30:09

标签: android

我在应用程序中添加了一个切换按钮,并创建了一个setOnCheckChangeListener,它将弹出吐司消息。

但是它仅在第二次单击后有效。

有什么想法吗?

MainActivity:

    public void checkSwitch (View view)
{
    addBeeps.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (isChecked)
            {
                beeps = true;
                Toast.makeText(MainActivity.this,"beeps is True",Toast.LENGTH_LONG).show();
            }else
            {
                beeps = false;
                Toast.makeText(MainActivity.this,"beeps is False",Toast.LENGTH_LONG).show();
            }
        }
    });

}

1 个答案:

答案 0 :(得分:0)

我认为在包含addBeeps开关的xml文件中,您正在使用此代码。

<Switch
        android:id="@+id/addBeeps"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="checkSwitch"/>

根本原因:第一次检查开关时,将在其上设置一个侦听器且不执行任何操作,第二次再次检查该开关时,将触发该监听器并吐司显示。

解决方案:这是为您提供的解决方案。

从xml文件中的开关

删除 onClick

<Switch
        android:id="@+id/addBeeps"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
checkSwitch

删除注释掉 MainActivity方法,并将设置的侦听器块代码移至onCreate方法。

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        addBeeps = findViewById(R.id.addBeeps);

        // TODO: Put set listener block code here
        addBeeps.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    beeps = true;
                    Toast.makeText(MainActivity.this, "beeps is True", Toast.LENGTH_LONG).show();
                } else {
                    beeps = false;
                    Toast.makeText(MainActivity.this, "beeps is False", Toast.LENGTH_LONG).show();
                }
            }
        });
    }

    // TODO: Delete or comment-out this method
//    public void checkSwitch(View view) {
//        addBeeps.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
//            @Override
//            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
//                if (isChecked) {
//                    beeps = true;
//                    Toast.makeText(MainActivity.this, "beeps is True", Toast.LENGTH_LONG).show();
//                } else {
//                    beeps = false;
//                    Toast.makeText(MainActivity.this, "beeps is False", Toast.LENGTH_LONG).show();
//                }
//            }
//        });
//    }