исключение нулевого указателя при разборе даты в формате простой даты - PullRequest
0 голосов
/ 20 мая 2018

У меня проблема с преобразованием моей строки в дату, и это дает мне исключение нулевого указателя, и я перепробовал все.

Вот так я ввожу свою строку в свою базу данных из calendarView

mCalendarView.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
        @Override
        public void onSelectedDayChange(@NonNull CalendarView calendarView, int i, int i1, int i2) {
            string = (i1 + 1) + "/" +i2 + "/" + i;
}
        });

String key = mDatabase.push().getKey();

                HashMap<String, String> dataMap = new HashMap<>();
                dataMap.put("Date", date);
                dataMap.put("Key", key);
 mDatabase.child(key).setValue(dataMap);

Затем, когда я извлекаю его из своей базы данных, я форматирую его следующим образом

databaseReference = FirebaseDatabase.getInstance().getReference().child("Groups").child("JMHyOvgCDvdKEZuReJvdGcExEnX2").child("HomeFragment").child("FreezerItems");
        valueEventListener = new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {

                HashMap<String, String> value = (HashMap<String,String>) dataSnapshot.getValue();
                if (value != null){
                    String name = value.get("Name");
                    String date = value.get("Date");

                    try {
                        dateFormat = new Date();
                        dateFormat = new SimpleDateFormat("M/dd/yyyy", Locale.US).parse(date);

                    } catch (ParseException e) {
                        Log.wtf("FailedtoChangeDate", "Fail");
                    }

Моя проблема заключается в том, что я пытаюсь преобразовать строку в формат M / dd / yyyy, даже если формат даты встрока выглядит примерно так: «30.05.2008»

Снимок экрана, когда я отлаживаю его

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Ваш скриншот очень полезен.Это показывает, что value возвращает null для имени и даты.Таким образом, значения, которые вы пытаетесь извлечь из этой карты, отсутствуют.Вот почему date равно null, и вы получите NullPointerException.

. Почему на карте нет даты (и имени), она находится вне кода, который мы видим в вопросе, поэтомуЯ не могу сказать.

0 голосов
/ 20 мая 2018

Обновление моего ответа: -

Ваша дата ввода 05/20/2018

String input_date = "05/20/2018";  
SimpleDateFormat format = new SimpleDateFormat("MM/dd/yyyy");  
try {  
    Date date = format.parse(input_date );  
    System.out.println(date);  
} catch (ParseException e) {
    e.printStackTrace();  
}
...