2013-08-28 51 views
0

我有一個問題。我希望我的edittext最初被禁用。只有當我檢查複選框時纔會啓用它。發生的是,當我啓動應用程序時,複選框沒有檢查,但我可以編輯edittext。要禁用edittext,我必須檢查然後取消選中文本框。你可以幫我嗎?通過取消選中複選框錯誤來禁用edittext

這裏是我的代碼:

check1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
@Override 
public void onCheckedChanged(CompoundButton buttonView, 
    boolean isChecked) { 
    if (isChecked) { 
     txtbox1.setEnabled(true); 
    } else { 
     txtbox1.setEnabled(false); 
    } 
} 
}); 

當使用2個複選框2個不同的EditText。按第二個複選框時,我的應用程序崩潰。繼承人代碼:

public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.order); 
txtbox1= (EditText) findViewById(R.id.editText1); 
button1 = (Button) findViewById(R.id.button1); 
tv = (TextView) findViewById(R.id.editText5); 
txtbox2= (EditText) findViewById(R.id.editText2); 
check1 = (CheckBox)findViewById(R.id.checkcheck); 
check2 = (CheckBox)findViewById(R.id.checkcheckcheck); 
button1.setOnClickListener(new clicker()); 



check1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
@Override 
public void onCheckedChanged(CompoundButton buttonView, 
    boolean isChecked) { 
    if (isChecked) { 
     txtbox1.setEnabled(true); 
     txtbox1.setFocusable(true); 
    } else { 
     txtbox1.setEnabled(false); 
     txtbox1.setFocusable(false); 
    } 
} 

});

check2.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
@Override 
public void onCheckedChanged(CompoundButton buttonView, 
    boolean isChecked) { 
    if (isChecked) { 
     txtbox2.setEnabled(true); 
     txtbox2.setFocusable(true); 
    } else { 
     txtbox2.setEnabled(false); 
     txtbox2.setFocusable(false); 
    } 
} 

});

}

的logcat: Logcat

+0

禁止在XML中的EditText,只有當用戶檢查複選框啓用它。 – Raghunandan

+0

你的xml中有'android:enabled =「false」'嗎? –

+0

是的。我忘了那一個。謝謝! – Kerv

回答

1

做u調用在onCreate()txtbox1.setEnabled(false);
onCheckChanged在開始時不會被調用。

+0

有一個新的問題。檢查我的更新代碼。 – Kerv

+0

你想告訴我崩潰日誌... – bixiaopeng

+0

發表。見圖片。 – Kerv

1

也許這將幫助你:

txtbox1.setKeyListener(null); 
1

在XML文件中使用 android:enabled = "false"的EditText上最初禁用它。

或編程方式寫在你的onCreate() txtbox1.setEnabled(false);

然後使用:

check1.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
@Override 
public void onCheckedChanged(CompoundButton buttonView, 
    boolean isChecked) { 
    if (isChecked) { 
     txtbox1.setEnabled(true); 
    } else { 
     txtbox1.setEnabled(false); 
    } 
} 
+0

謝謝。當我嘗試禁用不同的editext兩個複選框。第一個複選框正在工作,但當我點擊第二個時,我的應用程序崩潰。我會更新我的帖子併發布我的代碼。 – Kerv

+0

更新我的代碼。看到我的新問題。 – Kerv

+0

plz發佈您的logcat .. –

相關問題