Java 如何从文本视图和对话框中的复选框获取数据?
我创建了一个Java 如何从文本视图和对话框中的复选框获取数据?,java,android,android-layout,Java,Android,Android Layout,我创建了一个EditText按钮,它打开一个对话框,其中有一组复选框和一个EditText。在OnCreate方法中: skillsEditText = findViewById(R.id.edit_skills); skillsEditText.setClickable(true); skillsEditText.setOnClickListener(new View.OnClickListener() { @Overr
EditText
按钮,它打开一个对话框,其中有一组复选框和一个EditText。在OnCreate
方法中:
skillsEditText = findViewById(R.id.edit_skills);
skillsEditText.setClickable(true);
skillsEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this);
View mView = getLayoutInflater().inflate(R.layout.dialog_adding_skills,null);
mBuilder.setView(mView);
specialSkillsDialog = mBuilder.create();
specialSkillsDialog.setCanceledOnTouchOutside(false);
specialSkillsDialog.show();
}
});
public void onProfessionsDoneClick(View view) {
CheckBox skillCheckBox1 = findViewById(R.id.checkbox_skill1);
if (skillCheckBox1.isChecked()) {
allSkills.add(skillCheckBox1.getText().toString());
}
// Other checkboxes
// ...
TextView textInDialog = findViewById(R.id.edit_custom_text);
// more code
}
用户单击“完成”后,我执行onDoneClick
方法:
skillsEditText = findViewById(R.id.edit_skills);
skillsEditText.setClickable(true);
skillsEditText.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this);
View mView = getLayoutInflater().inflate(R.layout.dialog_adding_skills,null);
mBuilder.setView(mView);
specialSkillsDialog = mBuilder.create();
specialSkillsDialog.setCanceledOnTouchOutside(false);
specialSkillsDialog.show();
}
});
public void onProfessionsDoneClick(View view) {
CheckBox skillCheckBox1 = findViewById(R.id.checkbox_skill1);
if (skillCheckBox1.isChecked()) {
allSkills.add(skillCheckBox1.getText().toString());
}
// Other checkboxes
// ...
TextView textInDialog = findViewById(R.id.edit_custom_text);
// more code
}
当我运行它时,我得到以下错误:
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.widget.CheckBox.isChecked()' on a null object reference
从前面的线程中,我了解到这些复选框和编辑文本都在对话框中,因此我无法从
main活动中获取它们。什么是最好的更改方法,这样它才能工作?您需要将它们链接到您的对话框
即
在调用IsChecked()之前执行此操作
尝试调用虚拟方法“boolean”
空对象引用上的android.widget.CheckBox.isChecked()
当应用程序尝试使用具有空值的对象引用时,将引发NullPointerException
如果专业单击(视图视图)
来自对话框部分的视图,则传递视图的对象
public void onProfessionsDoneClick(View view) {
CheckBox skillCheckBox1 = view.findViewById(R.id.checkbox_skill1);
if (skillCheckBox1.isChecked()) {
allSkills.add(skillCheckBox1.getText().toString());
}
// Other checkboxes
// ...
TextView textInDialog = view.findViewById(R.id.edit_custom_text);
// more code
}
您需要将视图链接到您的复选框
CheckBox skillCheckBox1 = view.findViewById(R.id.checkbox_skill1);
在ProfessionsDoneClick上传入哪个视图?如果它是对话框的视图,那么只需将其更改为CheckBox skillCheckBox1=view.findviewbyd(R.id.CheckBox\u skill1)我的答案对您有用吗?