0

我对复选框有疑问。如果未勾选复选框但我无法这样做,我正在尝试将某些文本变灰。我以前这样做过,但忘记了,我的代码有点搞砸了,因为我没有保存它的副本。

这是java。

package com.example.mobilebillforecaster;

import com.example.mbf.R;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;

  public class Eticorporate extends Activity {
protected void onCreate(Bundle Bundle)
{
 super.onCreate(Bundle);
 setContentView(R.layout.eti_corporate);

((CheckBox)findViewById(R.id.cRoam)).setOnClickListener(new View.OnClickListener()
 {

public void onClick(View v)
  {
    if (((CheckBox)v).isChecked())
    {
      this.tbDataroam.setEnabled(true);
      this.bIntroam.setEnabled(true);
      this.dataroam.setEnabled(true);
      return;
    }
    this.tbDataroam.setEnabled(false);
    this.bIntroam.setEnabled(false);
    this.dataroam.setEnabled(false);
  }
 });

这是 XML

  <CheckBox
    android:id="@+id/cRoam"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_below="@id/datalocal"
    android:layout_marginTop="5.0dip"
    android:checked="false"
    android:onClick="onCheckboxClicked"
    android:text="@string/checkroam" />

  <TextView
    android:id="@+id/dataroam"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@id/datalocal"
    android:layout_below="@+id/bIntroam"
    android:layout_marginTop="18.0dip"
    android:enabled="false"
    android:text="@string/data_roam"
    android:textAppearance="?android:textAppearanceMedium" />

 <ToggleButton
    android:id="@+id/tbDataroam"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/bIntroam"
    android:layout_marginTop="7.0dip"
    android:layout_toRightOf="@id/nationalmins"
    android:enabled="false"
    android:text="@string/data_roam" />

<Button
    android:id="@+id/bIntroam"
    android:layout_width="250.0dip"
    android:layout_height="50.0dip"
    android:layout_alignRight="@id/bundle"
    android:layout_below="@id/cRoam"
    android:enabled="false"
    android:text="@string/int_roam" />

我知道这可能是一件简单的事情,但我就是想不通。

谢谢,

4

1 回答 1

0

我会推荐使用OnCheckedChangeListener代替。

看起来像这样:

((CheckBox)findViewById(R.id.cRoam)).setOnCheckedChangeListener(new OnCheckedChangeListener()
{  
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
    {
        if (isChecked)
        {
            this.tbDataroam.setEnabled(true);
            this.bIntroam.setEnabled(true);
            this.dataroam.setEnabled(true);
            return;
        }
        this.tbDataroam.setEnabled(false);
        this.bIntroam.setEnabled(false);
        this.dataroam.setEnabled(false);
    }
});

编辑:

在尝试访问它们之前,您需要获取对这 3 个小部件的引用:

ToggleButton tbDataroam = (ToggleButton) findViewById(R.id.tbDataroam);

对其他 2 个小部件重复...

于 2013-03-06T17:20:44.567 回答