2010-10-29 16 views
18

Ich habe eine Benutzereinstellung in meiner App, die von verschiedenen Aktivitäten verwendet wird. Ich würde gerne wissen, wie diese Präferenzen zwischen verschiedenen Aktivitäten in meiner App am besten genutzt werden können.Was ist die beste Möglichkeit, gemeinsame Einstellungen zwischen Aktivitäten zu verwenden

Ich habe die Idee, ein gemeinsames Präferenzobjekt aus der Hauptaktivität zu erstellen und von dort Absichten an die verschiedenen Aktivitäten zu senden, um Aktionen auszuführen. Funktioniert das...?

Oder rufen Sie einfach getsharedpreferences() aus jeder Aktivität ..?

Danke.

Antwort

23

Senden von gemeinsamen Einstellungen über Intents scheint zu kompliziert. Sie könnten die freigegebenen Einstellungen mit etwas wie dem Folgenden umbrechen und die Methoden direkt von Ihren Aktivitäten aufrufen:

+0

hmm .. zu viele Auswahlmöglichkeiten hier. aber tatsächlich enthält meine Benutzereinstellung Kontrollkästchen, die Aktionen in einer Listenansicht ausführen. also könnte ich mit den Vorschlägen hier gehen. Das einzige Problem ist, dass es von einem customCursorAdapter auffüllt, also jjst herauszufinden, wo man es nennen soll – irobotxxx

+1

yeah .. es funktioniert, hätte mich wirklich in den Fuß geschossen, wenn ich durch die Absicht Route gegangen wäre! – irobotxxx

+0

Haben Sie bei diesem Ansatz ein Leistungsproblem festgestellt? weil ich den gleichen Ansatz verwende und Leistungsprobleme habe, aber ich bin mir nicht sicher, ob dieser Ansatz die Ursache des Problems ist. – AlAsiri

6

Sie können auf diese Weise dieselben Variablen mit demselben Namen in allen Aktivitäten verwenden, die 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 wird zunächst WordCount geben 4; Und wenn Sie WORDCOUNT bearbeiten 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, getSharedPreferences in jeder Aktivität aufzurufen.

Ich denke nicht, dass die Weitergabe dieser Präferenz in Absicht funktioniert.

+0

Dies funktioniert für mich und ist einfach. –

0

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

Wenn Sie mehr als einen einfachen Typ als string oder int haben, können Sie ein Singleton verwenden oder die Anwendungsklasse erweitern, auf die alle Aktivitäten Ihrer Anwendung zugreifen können. => Kein Festplattenzugriff hier. Einfach im Gedächtnis behalten.

Verwandte Themen