gpt4 book ai didi

java - 即使选中(勾选),复选框也仅返回 false

转载 作者:行者123 更新时间:2023-12-02 09:25:39 34 4
gpt4 key购买 nike

在我的应用程序中,有 2 个复选框用于获取用户的类型(例如:学生或教师)。我知道我应该使用单选按钮而不是复选框,但我在教程中的问题要求使用复选框(所以请暂时忽略单选按钮)。

即使我选中一个复选框,isChecked() 方法也会返回 false。

这是 xml

        android:id="@+id/chkTeacher"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="157dp"
android:layout_marginLeft="157dp"
android:layout_marginTop="56dp"
android:text="Teacher"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/regPassword" />

<CheckBox
android:id="@+id/chkStudent"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="157dp"
android:layout_marginLeft="157dp"
android:layout_marginTop="20dp"
android:text="Student"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/chkTeacher" />

这是编码


EditText username, password;
CheckBox teacher, student;
DBHelper dbHelper = new DBHelper(this);
String type;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);

username = findViewById(R.id.regUserName);
password = findViewById(R.id.regPassword);
teacher = (CheckBox) findViewById(R.id.chkTeacher);
student = (CheckBox) findViewById(R.id.chkStudent);

if (teacher.isChecked() == true){
type = "teacher";
}
else{
type = "student";
}
}

我该如何解决这个问题?感谢您抽出宝贵的时间!

最佳答案

好吧,由于有两个不同的复选框,您必须同时使用这两个复选框,并且还必须触发另一个复选框的状态。希望下面的代码 fragment 能够帮助您实现您想要的目标。

    teacher = (CheckBox) findViewById(R.id.chkTeacher);
student = (CheckBox) findViewById(R.id.chkStudent);

if (teacher.isChecked() == true){
student.setchecked(false);
type = "teacher";
}
if (student.isChecked() == true) {
teacher.setchecked(false);
type = "student";
}

或者您可以像这样使用setOnCheckedChangeListener:

result = findViewById(R.id.tv_res);
teacher = findViewById(R.id.cb_tec);
student = findViewById(R.id.cb_std);
teacher.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (isChecked)
{
if (student.isChecked()) student.setChecked(false);
type = "teacher";
}
result.setText(type);

}
});
student.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
{
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (isChecked)
{
if (teacher.isChecked()) teacher.setChecked(false);
type = "student";
}
result.setText(type);
}
});

尝试运行检查的第二个解决方案:

output

请看一下,如果有效请告诉我。

关于java - 即使选中(勾选),复选框也仅返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58360882/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com