Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/211.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从文本视图和对话框中的复选框获取数据?_Java_Android_Android Layout - Fatal编程技术网

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)我的答案对您有用吗?