2013-03-06 77 views
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" /> 

我知道這可能是一個簡單的事情,但我只是不能想出辦法來的。

感謝,

回答

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個部件...

+0

問題是它找不到this.tbdataroam。它正在努力實施它。 – 2013-03-06 17:45:04

+0

那麼你需要獲得你想要訪問的小部件的參考......我將編輯我的帖子。 – 2013-03-06 17:46:13

+0

非常感謝您的幫助。 – 2013-03-06 18:08:19