Java 如何禁用表单中的按钮,直到用户填写重要字段
我有一张用户将填写的表格, 但是,我有一些字段需要用户填写: -案例名称 -箱子 -CaseDurationH,CaseDurationM(代表时间) -性别选举 然后用户还应填写CasePic或CaseTooth 如果用户填写这5个重要字段,则将启用“下一步”按钮,否则将禁用该按钮 这是我的代码,但它不完整,因为我不知道如何完成它Java 如何禁用表单中的按钮,直到用户填写重要字段,java,android,Java,Android,我有一张用户将填写的表格, 但是,我有一些字段需要用户填写: -案例名称 -箱子 -CaseDurationH,CaseDurationM(代表时间) -性别选举 然后用户还应填写CasePic或CaseTooth 如果用户填写这5个重要字段,则将启用“下一步”按钮,否则将禁用该按钮 这是我的代码,但它不完整,因为我不知道如何完成它 public class TestActivity extends Activity { /** Called when the activity is firs
public class TestActivity extends Activity {
/** Called when the activity is first created. */
EditText edit1;
EditText edit2;
EditText edit3;
Button button;
String test1;
RadioGroup GenderSelection;
Spinner CaseDurationH, CaseDurationM;
@Override
protected void onCreate(Bundle savedInstanceState) {
// Your initialization code...
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edit1= (EditText) findViewById(R.id.edit1);
edit2= (EditText) findViewById(R.id.edit2);
GenderSelection = (RadioGroup) findViewById(R.id.radioGroup);
button=(Button) findViewById(R.id.button);
CaseDurationH = (Spinner) findViewById(R.id.Shr);
CaseDurationM = (Spinner) findViewById(R.id.Smin);
TextWatcher watcher = new LocalTextWatcher();
edit1.addTextChangedListener(watcher);
edit2.addTextChangedListener(watcher);
//radiogroup();
int id = GenderSelection.getCheckedRadioButtonId();
if (id == -1){
//no item selected
button.setEnabled(false);
}
else{
if (id == R.id.radio0){
//Do something with the button
button.setEnabled(true);
} else{
if (id == R.id.radio1){
//Do something with the button
button.setEnabled(true);
} else{
if (id == R.id.radio2){
//Do something with the button
button.setEnabled(true);
}
updateButtonState();}}}
}
void updateButtonState() {
boolean enabled;
if(checkEditText(edit1) && checkEditText(edit2)) button.setEnabled(false);
else button.setEnabled(true);
}
private boolean checkEditText(EditText edit) {
return edit.getText().length() == 0;
}
private class LocalTextWatcher implements TextWatcher {
public void afterTextChanged(Editable s) {
updateButtonState();
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}}}
大多数
View
类都支持“事件监听器”,当某个事件发生时会调用这些类(在Android中,这些类通常在用户做某事时调用)
对于RadioGroup
,一种方法是。您可以通过RadioGroup
的方法将OnCheckedChangeListener
设置到RadioGroup
上。此方法类似于当前用于TextView
的addTextChangedListener()
(另一个侦听器)方法
我建议您查看一下,它为您提供了所有这些信息。您看到的问题是什么?您的逻辑看起来很合理(虽然不完整),但您在使用某些对象之前没有初始化它们……这是您的问题吗?我的问题是我知道如何
将TextChangedListener(watcher)
添加到文本中,但我如何才能为其他类型执行此操作?像ImageView、Spinner、RadioGroup一样,还有如何放置允许用户填充CasePic或CaseClothers的代码。您应该编辑您的问题并将其放在底部。因为你的问题目前的措辞方式,很难判断你的问题是什么。我应该把整个班级放在一起吗?你应该放一个适当的问题。我尝试使用RadioGroup.OnCheckedChangeListener,但它给了我一个错误:(在不知道错误的情况下,几乎无法提供帮助。这是您应该在问题中输入的重要信息。好的,很抱歉我没有提到:$请耐心等待我,如果我打扰您,我真的很抱歉,错误是:方法OnCheckdChangeListener(TextWatcher)类型未定义。请帮助我,实际上我昨天就被困在这里了。您需要为setOnCheckedChangeListener()
方法实现不同的接口才能工作。