微调器在 Android 中不工作

Spinner not working in Android

我的 application.when 中有两个微调器,我 select 一个微调器的值,根据 selection,值将加载到第二个微调器。问题是当我 select 第二个微调器时,应用程序不幸停止了。提前致谢。

public class CreateAppointment extends AppCompatActivity {

String[] lect_name = new String[100];
String[] spinner_subjects_load;
Spinner spSubject,spLecturer;
String chosedSubject;
String chosedLectName;
String chosedDateString;
RequestQueue requestQueue;
String url = "http://quick-appointment.b2creations.net/getLecturerNames.php";
CustomRequest customRequest;
String dayOfWeekString;
Calendar currentDate,chosedDate;
User user;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_create_appointment);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    Intent intent = getIntent();
    user = (User) intent.getExtras().getSerializable("user");

    currentDate = Calendar.getInstance();
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    dateFormat.format(currentDate.getTime());   //get current date


    spinner_subjects_load = new String[]{"SPDC", "HCI", "MAD", "SEIII", "SEP", "DAA", "ITP"};

    spSubject = (Spinner) findViewById(R.id.spSubject);
    ArrayAdapter<String> adapter1 = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item, spinner_subjects_load);
    spSubject.setAdapter(adapter1);

    requestQueue = Volley.newRequestQueue(this);

    spSubject.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            chosedSubject = spSubject.getSelectedItem().toString();

            HashMap<String, String> hashMap = new HashMap<String, String>();
            hashMap.put("subj_name", chosedSubject);

            customRequest = new CustomRequest(Request.Method.POST, url, hashMap, new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    int count = 0;
                    try {

                        JSONArray jsonArray = response.getJSONArray("Lecturers");
                        while (count < jsonArray.length()) {
                            JSONObject jo = jsonArray.getJSONObject(count);
                            lect_name[count] = jo.getString("name");
                            count++;
                        }

                        spLecturer = (Spinner) findViewById(R.id.spLecturer);

                        ArrayAdapter<String> adapter2 = new ArrayAdapter<String>(CreateAppointment.this, android.R.layout.simple_spinner_item, lect_name);
                        adapter2.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                        spLecturer.setAdapter(adapter2);

                        chosedLectName = spLecturer.getSelectedItem().toString();
                        Toast.makeText(CreateAppointment.this, chosedLectName, Toast.LENGTH_SHORT).show();

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {

                }
            });

            requestQueue.add(customRequest);

        }


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

        }
    });

}

看起来您初始化了第二个微调器 spLecturer,然后在您调用 spLecturer.getSelectedItem().toString() 之后立即启动,我相信此时 return 将为 null。

也许您打算先添加一个 OnItemSelectedListener