2012-03-28 11 views
0

Ich habe eine Farbauswahl, die ich in sharedPrefereces verwende. Mit dem Standard-Colorpicker konnte ich erreichen, was ich wollte, aber ich bemerkte, dass es keine schwarzen oder weißen Farben gibt. http://www.yougli.net/android/a-photoshop-like-color-picker-for-your-android-application/ Ich möchte diesen Code verwenden, aber in den letzten Zeilen zeigt er ein Beispiel, wo ich sehen kann, dass es an einen bevorzugten Bildschirm angehängt ist. Stattdessen verwende ich meine eigenen Aktivitäten mit Schaltflächen, wo ich gemeinsame Einstellungen verwenden kann, um Daten/Werte zu speichern (also keine Präferenz, sondern nur eine Aktivität). Klicken Sie zum Beispiel auf ein Layout-Ergebnis:Wie kann ich einen anderen Farbwähler ohne preferenceActivity verwenden?

Der Standard-Farbwähler Dialog erscheint und ich kann eine Farbe speichern. Nun, wie kann ich dies ohne einen Präferenzbildschirm verwenden und dasselbe erreichen? Ich habe versucht, den obigen Code in diesen Code zu kopieren, aber ich habe nicht herausgefunden, wie ich damit umgehen soll.

public class MySettings extends PreferenceActivity implements OnPreferenceClickListener, ColorPickerDialog.OnColorChangedListener { 

    public boolean onPreferenceClick(Preference pref) 

    { 

     new ColorPickerDialog(this, this, DROIDS_COLOR_KEY, mPrefs.getInt(DROIDS_COLOR_KEY, DROIDS_COLOR_DEFAULT), DROIDS_COLOR_DEFAULT).show(); 

     return true; 

    } 

    public void colorChanged(String key, int color) 

    { 

     ((PreferenceScreen)this.findPreference(SETTINGS_KEY)).getEditor().putInt(key, color).commit(); 

    } 

} 

Vielen Dank im Voraus!

Antwort

0

In Ihrer eigenen Aktivität hinzufügen

implements ColorPickerDialog.OnColorChangedListener 

zu der Klassendeklaration.

Ihre Klasse Körper hinzufügen:

public void colorChanged(String key, int color) { 
     //create your SharedPreferences and your SharedPreferences.Editor here 
     editor.putInt(key, color); 
     editor.commit();  
    } 

Und in einem Button-Klick-Listener hinzu:

new ColorPickerDialog(this, this, DROIDS_COLOR_KEY, mPrefs.getInt(DROIDS_COLOR_KEY, DROIDS_COLOR_DEFAULT), DROIDS_COLOR_DEFAULT).show(); 

Diese funktionieren soll. Lassen Sie es mich wissen, wenn Sie mir Ihre Frage nicht beantworten konnten und ich werde sehen, was ich tun kann.

+0

danke ich kann es nur in ein paar Stunden versuchen, hoffe es funktioniert :) –

+0

Nun, es gibt einige Probleme mit diesem. Erstens: das zweite sollte onColorChangedListener sein und dies ist onClickListener, wenn ich dies schreibe. Die zweite, dass es keinen DROIDS_COLOR_KEY oder DEFAULT gibt, ist unbekannt für mein System. –

+0

Hast du eine Idee, was ich für den ColorPickerDialog (..) schreiben soll? Ich kann DROIDS_COLOR_KEY als eine Farbe ersetzen, also ist mein Problem mit dem zweiten "das". –