appwidget preferences

  • 3 Antworten
  • Letztes Antwortdatum
M

moodsx

Neues Mitglied
0
Hallo Leute,

ich habe ein widget mit service. Beim erstem Start des widget wird eine PreferenceActivity aufgerufen um Einstellungen vorzunehmen. Hier der code im widgetprovider:

Code:
	@Override
	public void onEnabled(Context context){
		Intent pr = new Intent(context, Preferences.class);
		pr.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
		context.startActivity(pr);
	}

Im Service greife ich auf die Daten wieder zu:

Code:
public void onStart(Intent intent, int startId) {
	    Log.i(LOG, "Called");
	    SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(this);
		String url1 = SP.getString("url1", "url1");
//noch mehr code ... }

Mein Problem ist nun, das wenn eine weitere Instance des widgets auf dem Screen abgelegt wird keine PreferenceActivity mehr aufgerufen wird, sondern mit den Einstellungen aus der ersten Instance gearbeitet wird. Wo liegt hier mein Denkfehler und wie kann ich für jede einzelne Instance die Settings seperat speichern?

Danke für Eure Hilfe.


Mit freundlichen Grüßen Sven
 
Hallo Leute,

ich glaube fast das mein Vorhaben mit sharedpreferences nicht durchführbar bzw. der völlig fasche Ansatz ist.

Kann mir jemand einen Tip geben womit ich sowas erschlagen kann?

Danke für Eure Hilfe.
 
Doch das passt schon, habe ich auch schon gemacht.
Musst natürlich aufpassen, dass du die Preferences schön getrennt für die einzelnen Widget Instanzen abspeicherst und verwaltest.

Deine PreferenceActivity sollte allerdings nicht im Provider explizit gestartet werden, sondern in der widget Konfigurations XML definiert sein.

Die sieht bei mir zum Beispiel so aus:
Code:
<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"
    android:configure="de.devland.widget.hub.WidgetConfiguration"
    android:initialLayout="@layout/empty_layout_vertical"
    android:minHeight="320dp"
    android:minWidth="180dp" />

In android:configure landet dann deine PreferenceActivity. Die Logik zum Widget aufbauen gehört dann in die onUpdate von deinem Widget.
 
Danke.

Das war genau der Tritt den ich gebraucht hab. Läuft! :winki:

Hab das ganz jetzt zwar ohne preferenceactivity gebaut aber egal. Settings stehen jetzt einfach in einer Datei und gut is.
 
Zurück
Oben Unten