Frage

habe ich einen Benutzerpräferenz in meiner Anwendung, die von verschiedenen Aktivitäten verwendet wird. Ich mag den besten Weg, wissen, diese Präferenzen zwischen verschiedenen Aktivitäten in meiner App zu nutzen.

Ich habe diese Idee ein gemeinsame Vorliebe Objekt aus der Haupttätigkeit und von dort aus senden Absichten zu den verschiedenen Aktivitäten zu schaffen Maßnahmen zu ergreifen. Funktioniert das...?

oder einfach nur halten Aufruf getsharedpreferences() von jeder Aktivität ..?

Danke.

War es hilfreich?

Lösung

Senden gemeinsame Präferenzen durch Absichten scheint zu kompliziert. Sie könnten die gemeinsamen Vorlieben mit so etwas wie die wickeln unten und die Methoden aufrufen, direkt von Ihrer Aktivitäten:

public class Prefs {
    private static String MY_STRING_PREF = "mystringpref";
    private static String MY_INT_PREF = "myintpref";

    private static SharedPreferences getPrefs(Context context) {
        return context.getSharedPreferences("myprefs", 0);
    }

    public static String getMyStringPref(Context context) {
        return getPrefs(context).getString(MY_STRING_PREF, "default");
    }

    public static int getMyIntPref(Context context) {
        return getPrefs(context).getInt(MY_INT_PREF, 42);
    }

    public static void setMyStringPref(Context context, String value) {
        // perform validation etc..
        getPrefs(context).edit().putString(MY_STRING_PREF, value).commit();
    }

    public static void setMyIntPref(Context context, int value) {
        // perform validation etc..
        getPrefs(context).edit().putInt(MY_INT_PREF, value).commit();
    }
}

Andere Tipps

Sie können auf diese Weise verwenden und erklären gleichen Variablen mit dem gleichen Namen in allen Aktivitäten, wo Sie verwenden möchten.

  public static final String PREFS_NAME = "MyPrefsFile";
  static SharedPreferences settings;
  SharedPreferences.Editor editor;
  int wordCount;

 public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    settings = getSharedPreferences(PREFS_NAME, 0);
    editor = settings.edit();

    wordCount = settings.getInt("wordCount", 4); 

  }

Hier zunächst wird WORDCOUNT 4 geben; Und wenn Sie bearbeiten WORDCOUNT und wollen wieder speichern

  editor.putInt("wordCount", 6);
  editor.commit();

Sie haben diese gleichen Variablen in Aktivitäten zu erklären, wo Sie gemeinsam genutzte Einstellungen verwenden möchten. Und es ist besser, rufen Sie getSharedPreferences in jeder Aktivität.

Ich glaube nicht, dass diese Präferenz in der Absicht Wille Arbeit übergeben.

Sie können natürlich verwendet die gemeinsame Einstellungen in Ihren Anwendungen.

Wenn Sie mehr als ein einfacher Typ als String oder int haben, können Sie ein Singleton verwenden oder erweitert die Anwendungsklasse, die von allen Aktivitäten Ihrer Anwendung zugänglich sein wird. => Kein Plattenzugriff hier. Einfach im Speicher gehalten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top