DatePickerDialog funktioniert nicht

O

Otmar_Schramm

Neues Mitglied
0
Hallo,
ich beschäftige mich gerade mit dem Android für Dummies....
Beim Terminplaner streikt das Programm beim DatePickerDialog.
Die App stürzt immer ab beim Klick auf ein showDatePicker-Button

Code:
private DatePickerDialog showDatePicker() {
         DatePickerDialog datePicker = new DatePickerDialog(ReminderEditActivity.this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
                mCalendar.set(Calendar.YEAR, year);
                mCalendar.set(Calendar.MONTH, monthOfYear);
                mCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                updateDateButtonText();
            }
        }, mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH));
        return datePicker; 
    }

Danke für Infos
 
Was sagt den LogCat dazu?
 
Nun die erste Error Meldung ist eine
NullPointerException und lautet:
03-04 19:32:42.200: E/AndroidRuntime(23712): at de.otmar.terminplaner.ReminderEditActivity.showDatePicker(ReminderEditActivity.java:83

Sie verzweigt auf die Zeile
Code:
    }, mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH));
aus dem Quellcode.
 
und dein mcalendar ist initialisiert ? woher kommt der denn ?
 
er kommt aus der gleichen Klasse mit:

Code:
private Calendar mCalendar;

private static final String DATE_FORMAT = "dd.mm.yyyy";
private static final String TIME_FORMAT = "kk:mm";
 
Hier mal der komplette Code:

Code:
package de.otmar.terminplaner;

import java.text.SimpleDateFormat;
import java.util.Calendar;

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TimePicker;

public class ReminderEditActivity extends Activity {
    private Button mDateButton;
    private Button mTimeButton;
    private static final int DATE_PICKER_DIALOG = 0;
    private static final int TIME_PICKER_DIALOG = 1;
    private Calendar mCalendar;
    private static final String DATE_FORMAT = "dd.mm.yyyy";
    private static final String TIME_FORMAT = "kk:mm";
    
    
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.reminder_edit);
        mDateButton = (Button) findViewById(R.id.reminder_date);
        mTimeButton = (Button) findViewById(R.id.reminder_time);
        
        if(getIntent() != null) {
            Bundle extras = getIntent().getExtras();
            int rowId = extras != null ? extras.getInt("RowId") : -1;
            //row hier verarbeiten
        }
        registerButtonListenersAndSetDefaultText();
        
    }

    private void registerButtonListenersAndSetDefaultText() {
        // TODO Auto-generated method stub
        mDateButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                showDialog(DATE_PICKER_DIALOG);
            }
        });
        
        mTimeButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                showDialog(TIME_PICKER_DIALOG);
            }
        });
        updateDateButtonText();
        updateTimeButtonText();
    }
    
    @Override
    protected Dialog onCreateDialog(int id) {
        switch(id) {
        case DATE_PICKER_DIALOG:
            return showDatePicker();
        case TIME_PICKER_DIALOG:
            return showTimePicker();
        }
        return super.onCreateDialog(id);
    }

    private DatePickerDialog showDatePicker() {
         DatePickerDialog datePicker = new DatePickerDialog(ReminderEditActivity.this, new DatePickerDialog.OnDateSetListener() {
            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
                mCalendar.set(Calendar.YEAR, year);
                mCalendar.set(Calendar.MONTH, monthOfYear);
                mCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                updateDateButtonText();
            }
        }, mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH));
        return datePicker; 
    }
    private void updateDateButtonText() {
        SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
        String dateForButton = dateFormat.format(mCalendar.getTime());
        mDateButton.setText(dateForButton);
    }
    
    private TimePickerDialog showTimePicker() {
        TimePickerDialog timePicker = new TimePickerDialog(this, new TimePickerDialog.OnTimeSetListener() {
            
            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                // TODO Auto-generated method stub
                mCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
                mCalendar.set(Calendar.MINUTE, minute);
                updateTimeButtonText();
                
            }
        }, mCalendar.get(Calendar.HOUR_OF_DAY), mCalendar.get(Calendar.MINUTE), true);
        return timePicker;
    }

    
    private void updateTimeButtonText() {
        // TODO Auto-generated method stub
        SimpleDateFormat timeFormat = new SimpleDateFormat(TIME_FORMAT);
        String timeForButton = timeFormat.format(mCalendar.getTime());
        mTimeButton.setText(timeForButton);
    }

}
 
Ich hätte irgendwo ein "mCalendar = new Calendar();" erwartet.
 
Zuletzt bearbeitet:
  • Danke
Reaktionen: swordi
Der fehlende Code war:

mCalendar = Calendar.getInstance();

danke euch!!
 

Ähnliche Themen

SaniMatthias
Antworten
19
Aufrufe
960
swa00
swa00
O
Antworten
15
Aufrufe
2.973
ORHUX
O
K
Antworten
3
Aufrufe
1.168
Kapikalaani
K
Zurück
Oben Unten