1. Gewinne jetzt ein UMiDIGI C Note - alle Informationen findest du hier!!
  1. stefanT60, 28.07.2010 #1
    stefanT60

    stefanT60 Threadstarter Neuer Benutzer

    Hallo zusammen,

    also meine eigene DatePicker Preference funktioniert super. Jedoch bekomme ich in meiner Activity kein OnPreferenceChangeListener Event mitgteilt.

    Hier die Preference

    PHP:
    // Die Erweiterung gehört zu diesem Package
    package android.preference;

    import android.content.Context;
    import android.preference.DialogPreference;
    import android.util.AttributeSet;
    import android.view.View;
    import android.widget.DatePicker;

    /**
     * Eine Preference Typ zum auswählen eines Datum
     */
    public class DatePickerPreference extends DialogPreference implements
            
    DatePicker.OnDateChangedListener {

        
    /**
         * The validation expression for this preference
         */
        
    private static final String VALIDATION_EXPRESSION "[0-9]*[0-9]*[0-9]*[0-9]-[0-1]*[0-9]-[0-3]*[0-9]";

        
    /**
         * Der default Wert für diese Preference. Der Monat 00 entspricht Jan
         */
        
    private String defaultValue "1990-00-00";

        
    /**
         * @param context
         * @param attrs
         */
        
    public DatePickerPreference(Context contextAttributeSet attrs) {
            
    super(contextattrs);
            
    initialize();
        }

        
    /**
         * @param context
         * @param attrs
         * @param defStyle
         */
        
    public DatePickerPreference(Context contextAttributeSet attrs,
                
    int defStyle) {
            
    super(contextattrsdefStyle);
            
    initialize();
        }

        private 
    void initialize() {
            
    setPersistent(true);
        }

        
    /*
         * (non-Javadoc)
         * 
         * @see android.preference.DialogPreference#onCreateDialogView()
         */
        
    @Override
        
    protected View onCreateDialogView() {

            
    int y this.getYear();
            
    int m this.getMonth();
            
    int d this.getDay();

            
    DatePicker tp = new DatePicker(getContext());
            if (
    == -1)
                
    tp.init(19900101this);
            else
                
    tp.init(ymdthis);

            return 
    tp;
        }

        
    /**
         * Sollte eigentlich automatisch aufgerufen werden wenn im XML das attribute
         * android:defaultValue eingetragen ist.
         * 
         * @see android.preference.Preference#setDefaultValue(java.lang.Object)
         */
        
    @Override
        
    public void setDefaultValue(Object defaultValue) {

            
    super.setDefaultValue(defaultValue);

            if (!(
    defaultValue instanceof String)) {
                return;
            }

            if (!((String) 
    defaultValue).matches(VALIDATION_EXPRESSION)) {
                return;
            }

            
    this.defaultValue = (String) defaultValue;
        }

        
    /**
         * Liefert das Jahr im YYYY Format
         * 
         * @return int 0-9999
         */
        
    private int getYear() {
            
    String date getPersistedString(this.defaultValue);

            if (
    date == null || !date.matches(VALIDATION_EXPRESSION)) {
                return -
    1;
            }

            return 
    Integer.valueOf(date.split("-")[0]);
        }

        
    /**
         * Liefert den Monat im MM Format
         * 
         * @return int 0-11
         */
        
    private int getMonth() {
            
    String date getPersistedString(this.defaultValue);

            if (
    date == null || !date.matches(VALIDATION_EXPRESSION)) {
                return -
    1;
            }

            return 
    Integer.valueOf(date.split("-")[1]);
        }

        
    /**
         * Liefert den Tag im DD Format
         * 
         * @return int 1-31
         */
        
    private int getDay() {
            
    String date getPersistedString(this.defaultValue);

            if (
    date == null || !date.matches(VALIDATION_EXPRESSION)) {
                return -
    1;
            }

            return 
    Integer.valueOf(date.split("-")[2]);
        }

        @
    Override
        
    public void onDateChanged(DatePicker viewint yearint monthOfYear,
                
    int dayOfMonth) {

            
    persistString(year "-" monthOfYear "-" dayOfMonth);

        }

        @
    Override
        
    public void onDialogClosed(boolean positiveResult) {
            
    super.onDialogClosed(positiveResult);
            if (
    positiveResult) {            
                
    // getEditor().
                
    setTitle(getTitle());
                
    setSummary(getYear()+"-"+getMonth());
               
    SharedPreferences.Editor editor this.getEditor();
               
    editor.putString(this.getKey(), )
            }
            
    /*

             */

        
    }

    }

    Hier die PreferenceActivity

    PHP:


    import android
    .os.Bundle;
    import android.preference.DatePickerPreference;
    import android.preference.EditTextPreference;
    import android.preference.Preference;
    import android.preference.PreferenceActivity;
    import android.preference.Preference.OnPreferenceChangeListener;
    import android.util.Log;

    public class 
    aSettings extends PreferenceActivity {

        
    /* Debugging */
        
    private static final String TAG "aSettings";
        private static final 
    boolean D true;
        
    /* */

        /* Preferences */
        
    final String AGE "age_preference";

        
    /* */

        /** Called when the activity is first created. */
        
    @Override
        
    public void onCreate(Bundle savedInstanceState) {
            
    super.onCreate(savedInstanceState);

            if (
    D)
                
    Log.i(TAG"+++ ON CREATE +++");

            
    // Load the preferences from an XML resource
            
    addPreferencesFromResource(R.xml.profilpreferences);

            ((
    DatePickerPreferencefindPreference(AGE))
                    .
    setOnPreferenceChangeListener(mChangeListener);

        }

        private 
    OnPreferenceChangeListener mtChangeListener = new OnPreferenceChangeListener() {

            @
    Override
            
    public boolean onPreferenceChange(Preference preferenceObject newValue) {

                
    String unit "";
                if (
    preference.getKey().equals(AGE)) {
                    
    preference.setSummary(newValue.toString() + " " unit);
                }

                
    preference.setSummary(newValue.toString() + " " unit);

                return 
    false;
            }
        };

    }
    In onDialogClosed der DatePickerP setze ich absichtlich Werte aber es wird kein Event ausgelöst.

    Über Hilfe würde ich mich freuen.
     
  2. stefanT60, 28.07.2010 #2
    stefanT60

    stefanT60 Threadstarter Neuer Benutzer

    Problem selbst gelöst!

    PHP:
    callChangeListener(year "-" monthOfYear "-" dayOfMonth);
    hat gefehlt
     
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Listview mit Datenbank über Custom ArrayList verbinden Android App Entwicklung 22.04.2017
[ERLEDIGT] Interpolator für einen Custom Dialog verwenden in einem Fragment Android App Entwicklung 20.03.2017
[ERLEDIGT] Einen schatten über einer Custom ToolBar anzeigen Android App Entwicklung 15.03.2017
Custom ActionBar (toolbar) "Bottom" schatten anzeigen Android App Entwicklung 09.03.2017
Search Custom Adapter Android App Entwicklung 02.01.2017
Custom CheckBox drawable wird nicht richtig dargestellt Android App Entwicklung 14.07.2016
Du betrachtest das Thema "Custom DatePicker Preferences - OnPreferenceChangeListener" im Forum "Android App Entwicklung",