Android - 为什么ToggleButton的isEnabled不起作用?

时间:2014-06-22 20:20:18

标签: android isenabled android-togglebutton

所以我刚刚定义了一个ToggleButton变量,通过id找到了视图,将激活设置为false,并设置了一个OnClickListener。在onClick方法中,我检查了它是否在if语句中启用。如果它已启用,那么它应该记录它,但我检查了Console和LogCat,它没有显示任何内容。这是我的代码:

tb = (ToggleButton) findViewById(R.id.onoff);
    tb.setActivated(false);
    tb.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if(tb.isEnabled()){
                Log.d("", "activated");
            }else if(!tb.isEnabled()){
                Log.d("", "deactivated");
            }
        }
    });

我不知道如何在文字内部执行代码'事情(比如onClick应该有一个灰色框),所以请不要因此而投票。

1 个答案:

答案 0 :(得分:1)

 public boolean isEnabled ()

此方法继承自基类视图,该视图主要定义是否是用户难以处理的。

您需要使用 isChecked() 方法来确定ToggleButton是打开还是关闭。

将您的代码更新为:

tb = (ToggleButton) findViewById(R.id.onoff);
tb.setActivated(false);
tb.setOnClickListener(new View.OnClickListener() {

    @Override
    public void onClick(View v) {
        if(((ToggleButton)v).isChecked()){
            Log.d("", "activated");
        }else{
            Log.d("", "deactivated");
        }
    }
});

或第二种方式

你的xml代码中的

<ToggleButton 
android:id="@+id/togglebutton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textOn="Vibrate on"
android:textOff="Vibrate off"
android:onClick="onToggleClicked"/>

在您的活动中

public void onToggleClicked(View view) {
// Is the toggle on?
boolean on = ((ToggleButton) view).isChecked();

if (on) {
    // Enable vibrate
} else {
    // Disable vibrate
}
}