Ich verwende Spinner, um das Datum in der Kalenderklasse anzuzeigen.Wie kann ich meinen Spinner-Wert abrufen, wenn ich Kalender verwende
Ich kann das Jahr und den Monat bekommen, aber ich kann nicht Tag Wert auf spinner
bekommen.
Es zeigt
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference
Wie kann ich das Problem beheben? Hier
ist der Code:
private void datePick(){
Calendar calendar = Calendar.getInstance();
for (int i = 0; i < 100; i++) {
dataYear.add("" + (calendar.get(Calendar.YEAR) - i));
}
adapterSpYear = new ArrayAdapter<String>(getActivity(), R.layout.spinner, dataYear);
adapterSpYear.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
spYear.setAdapter(adapterSpYear);
spYear.setSelection(34);//for 1982
for (int i = 1; i <= 12; i++) {
dataMonth.add("" + (i < 10 ? "0" + i : i));
}
adapterSpMonth = new ArrayAdapter<String>(getActivity(), R.layout.spinner, dataMonth);
adapterSpMonth.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
spMonth.setAdapter(adapterSpMonth);
adapterSpDay = new ArrayAdapter<String>(getActivity(), R.layout.spinner, dataDay);
adapterSpDay.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spDay.setAdapter(adapterSpDay);
spMonth.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int arg2, long arg3) {
dataDay.clear();
Calendar calendar1 = Calendar.getInstance();
calendar1.set(Calendar.YEAR, Integer.valueOf(spYear.getSelectedItem().toString()));
calendar1.set(Calendar.MONTH, arg2);
int dayOfMonth = calendar1.getActualMaximum(Calendar.DAY_OF_MONTH);
for (int i = 1; i <= dayOfMonth; i++) {
dataDay.add("" + (i < 10 ? "0" + i : i));
}
adapterSpDay.notifyDataSetChanged();
String year=spYear.getSelectedItem().toString();
String month=spMonth.getSelectedItem().toString();
String day=spDay.getSelectedItem().toString();
Log.i("test",".>>>>Year>>>>"+year);
Log.i("test",".>>>>Month>>>>"+month);
Log.i("test",".>>>>Day>>>>"+day);
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
}
});
}
enter image description here enter image description here
Ich denke, dass Sie adapterSpDay.clear() und adapterSpDay.add oder addAll, um Änderungen in es anstelle von Clearing- und das Hinzufügen neuer Daten auf dem dataDay verwenden sollten Array – Beyka
Überprüfen Sie den Wert von spDay.getSelectedItem(). Es ist null, da Sie keinen Tag auswählen, Sie haben nur Jahr und Monat ausgewählt. –
Wenn ich den Code festlege String tag = spDay.getSelectedItem(). ToString(); Starten Sie die App, es wird sofort abstürzen. Ich habe die Lösung von Sangeet, danke für Ihre Hilfe @SHIVANIGARG und Beyka –