如何在 Java 中制作 Material 公开下拉列表必填字段

How to make Material Exposed Drop Down List required field in Java

我正在使用 Material Exposed Drop Down List 将信息添加到我的 Firebase 数据库,我需要在保存信息之前将下拉列表设置为必填字段。目前信息将保存,但将字段保存为 null,这使我的添加在不同的 activity.

上崩溃

我目前使用的代码将下拉菜单视为 EditText,但这不起作用。

我正在定义下拉菜单并捕获用户输入(如果有),如下所示:

 //CPD TYPE DROPDOWN MENU
    cpdTypeLayout = findViewById(R.id.cpdTypeLayout);
    cpdType = findViewById(R.id.cpdType);

    final String[] type = new String[]{
            "Formal Education Completed", "Other Completed", "Professional Activities", "Self-Directed Learning", "Work-Based Learning"
    };

    final ArrayAdapter<String> adapterType = new ArrayAdapter<>(
            AddActivity.this,
            R.layout.dropdown_item,
            type
    );

    cpdType.setAdapter(adapterType);

    //TO CAPTURE USER SELECTION FROM DROP DOWN LIST
    ((AutoCompleteTextView)cpdTypeLayout.getEditText()).setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            adapterType.getItem(position);
            selectedType = ((AutoCompleteTextView)cpdTypeLayout.getEditText()).getText().toString();
            Log.d("TAG", "selected type is: " + selectedType);
        }
    });

然后我使用此代码在添加到 Firebase 之前检查是否有任何内容为空,但检查不会停止进行保存。

if (selectedType.isEmpty() || selectedHours.isEmpty() || selectedMins.isEmpty()) {
                            Toast.makeText(AddActivity.this, "Can not save activity with empty fields", Toast.LENGTH_SHORT).show();
                            return;
                        }

我也尝试过使用 selectedType == null 但这也不起作用。

我不确定是否需要在我的 XML 文件或 Java 文件中添加一些内容来防止这种情况发生

我设法通过将以下内容添加到我的保存按钮单击来自行解决此问题:

fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (selectedType.trim().length() != 0 && selectedHours.trim().length() != 0 && selectedMins.trim().length() != 0){
                    uploadToFirebase();
                } else {
                    if (selectedType.trim().length() == 0) {
                        cpdTypeLayout.setError("Please select Activity Type");
                    }
                    if (selectedHours.trim().length() == 0) {
                        cpdHoursLayout.setError("Please select Hours");
                    }
                    if (selectedMins.trim().length() == 0){
                        cpdMinsLayout.setError("Please select Minutes");
                    }
                }
            }
        });