1. Nimm jetzt an unserem AGM - Gewinnspiel teil - Informationen zum M1, A2 und A8 findest Du hier, hier und hier!
  1. Otmar_Schramm, 04.03.2012 #1
    Otmar_Schramm

    Otmar_Schramm Threadstarter Neuer Benutzer

    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
     
  2. snowman2, 04.03.2012 #2
    snowman2

    snowman2 Erfahrener Benutzer

    Was sagt den LogCat dazu?
     
  3. Otmar_Schramm, 04.03.2012 #3
    Otmar_Schramm

    Otmar_Schramm Threadstarter Neuer Benutzer

    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.
     
  4. swordi, 04.03.2012 #4
    swordi

    swordi Gewerbliches Mitglied

    und dein mcalendar ist initialisiert ? woher kommt der denn ?
     
  5. Otmar_Schramm, 04.03.2012 #5
    Otmar_Schramm

    Otmar_Schramm Threadstarter Neuer Benutzer

    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";
    
    
     
  6. Otmar_Schramm, 04.03.2012 #6
    Otmar_Schramm

    Otmar_Schramm Threadstarter Neuer Benutzer

    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);
        }
    
    }
    
    
     
  7. snowman2, 04.03.2012 #7
    snowman2

    snowman2 Erfahrener Benutzer

    Ich hätte irgendwo ein "mCalendar = new Calendar();" erwartet.
     
    Zuletzt bearbeitet: 04.03.2012
    swordi bedankt sich.
  8. Otmar_Schramm, 06.03.2012 #8
    Otmar_Schramm

    Otmar_Schramm Threadstarter Neuer Benutzer

    Der fehlende Code war:

    mCalendar = Calendar.getInstance();

    danke euch!!
     

Besucher kamen mit folgenden Begriffen auf unsere Seite:

  1. Date picker funktioniert nicht

    ,
  2. set dateformat funktioniert nicht