有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java OnClickListener无法按预期工作

我有一个屏幕和两个旋转器。第二个微调器中的选择取决于用户在第一个微调器中的选择

这是我的代码:

对于第一个微调器:

 ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(this,
                安卓.R.layout.simple_dropdown_item_1line, getResources().getStringArray(R.array.oman_states));

 final MaterialBetterSpinner materialDesignSpinner = (MaterialBetterSpinner)
                findViewById(R.id.states_list);       // states spinner

        materialDesignSpinner.setAdapter(arrayAdapter);

对于第二个微调器:

  final MaterialBetterSpinner materialDesignSpinner2 = (MaterialBetterSpinner)
                findViewById(R.id.hospitals_list);

我在第二个微调器中实现了以下侦听器:

materialDesignSpinner2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (materialDesignSpinner.getText().toString() == getString(R.string.muscat)) {

                    ArrayAdapter<String> muscatHospitals = new ArrayAdapter<>(v.getContext(),
                            安卓.R.layout.simple_dropdown_item_1line, getResources().getStringArray(R.array.muscat_hospitals));

                    materialDesignSpinner2.setAdapter(muscatHospitals);
                } else if (materialDesignSpinner.getText().toString() == getString(R.string.albatna)) {

                    ArrayAdapter<String> albatnaHospitals = new ArrayAdapter<>(v.getContext(),
                            安卓.R.layout.simple_dropdown_item_1line, getResources().getStringArray(R.array.albatan_hospitals));

                    materialDesignSpinner2.setAdapter(albatnaHospitals);

                } else if (materialDesignSpinner.getText().toString() == getString(R.string.musandam)) {

                    ArrayAdapter<String> smaelHospitals = new ArrayAdapter<>(v.getContext(),
                            安卓.R.layout.simple_dropdown_item_1line, getResources().getStringArray(R.array.musandam_hospitals));

                    materialDesignSpinner2.setAdapter(smaelHospitals);

                } else if (gm.spinnerChecking(materialDesignSpinner)) {
                    Toast.makeText(v.getContext(), getString(R.string.choose_state_first), Toast.LENGTH_LONG).show();
                }
                System.out.println("Working");
            }
        });

当我按下微调器时,应用程序崩溃

显示以下错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'void 安卓.widget.Filter.filter(java.lang.CharSequence, 安卓.widget.Filter$FilterListener)' on a null object reference at 安卓.widget.AutoCompleteTextView.performFiltering(AutoCompleteTextView.java:971) at com.weiwangcn.betterspinner.library.material.MaterialBetterSpinner.onFocusChanged(MaterialBetterSpinner.java:49)

如何根据第一个微调器选择第二个微调器

更新:

应用@dominicoder解决方案后,由于某种原因,onItemSelected不会执行,因为System.out.println()不会将“工作”打印到控制台

以下是onItemSelected的代码:

materialDesignSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                secondSpinnerAdapter.clear();
                secondSpinnerAdapter.addAll(getStringsForPosition(position));
                System.out.println("works");
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {

            }
        });

共 (0) 个答案