我是android新手。我有两个单选按钮和编辑文本。检查单选按钮,它禁用编辑文本并防止输入板出现,并检查单选按钮2启用编辑文本...我尝试了很多答案但没有任何作用。 这是我的代码
public class MainActivity extends AppCompatActivity {
RadioButton radioButton, radioButton2;
EditText editText;
RadioGroup radioGroup;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
radioButton = (RadioButton) findViewById(R.id.radioButton);
radioButton.setChecked(true);
radioButton2 = (RadioButton) findViewById(R.id.radioButton2);
radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
if ((radioButton.isChecked())) {
editText.setEnabled(false);
editText.setInputType(InputType.TYPE_NULL);
editText.setFocusableInTouchMode(false);
}
else {
editText.setEnabled(false);
editText.setFocusableInTouchMode(false);
}
}
}
答案 0 :(得分:3)
嘿,先把两个单选按钮放在一个Radio组。
检查此代码。
RadioGroup rg = (RadioGroup) findViewById(R.id.radioGroup1);
rg.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
{
switch(checkedId)
{
case R.id.radio0:
editText.setEnabled(false);
editText.setInputType(InputType.TYPE_NULL);
editText.setFocusableInTouchMode(false);
break;
case R.id.radio1:
editText.setEnabled(false);
editText.setFocusableInTouchMode(false);
break;
}
}
});
希望这有帮助。快乐的编码。
答案 1 :(得分:0)
使用setOnCheckedChangeListener的方法并管理checked和uncheck事件。
答案 2 :(得分:0)
你应该删除这部分代码:
if ((radioButton.isChecked())) {
editText.setEnabled(false);
editText.setInputType(InputType.TYPE_NULL);
editText.setFocusableInTouchMode(false);
} else {
editText.setEnabled(false);
editText.setFocusableInTouchMode(false);
}
并将其替换为:
radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
editText.setEnabled(false);
editText.setInputType(InputType.TYPE_NULL);
editText.setFocusableInTouchMode(false);
} else {
editText.setEnabled(false);
editText.setFocusableInTouchMode(false);
}
}
});
如果您使用CheckBox
而不是RadioButton
,则此解决方案会更好,因为您的需求与CheckBox
更兼容。
答案 3 :(得分:0)
rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
{
switch(checkedId)
{
case R.id.radio0:
editText.setEnabled(false);
editText.setInputType(InputType.TYPE_NULL);
editText.setFocusableInTouchMode(false);
break;
case R.id.radio1:
editText.setEnabled(false);
editText.setInputType(InputType.TYPE_CLASS_TEXT);
editText.setFocusableInTouchMode(false);
break;
}
}
});