2016-07-31 37 views
0

Ich erstelle ein Menü, aus dem der Benutzer Elemente auswählen kann. Sie können ihre Auswahl bei Bedarf bearbeiten. Das Singleton wäre eine Klasse, die die Liste aller auswählbaren Elemente enthält. Wenn neue Aktivitäten geöffnet werden, hat der Singleton den korrekten Status aller Elemente.Muss Singleton für den Zugriff auf ein einzelnes Objekt in allen Aktivitäten deklariert werden?

Der Grund, warum ich das frage, ist, weil das Implementieren von Serializable eine neue Instanz (wenn auch fast identisch) des Elements erstellt.

+0

Ich habe die Frage nicht geklärt. Singleton hat den Zweck, die Objekterstellung zu steuern und die Anzahl der Objekte auf nur eins zu beschränken. –

+0

Sie können Singleton verwenden und eine andere Option besteht darin, es in Ihrer Hauptaktivität zu erstellen und BroadcaseReceiver zu definieren, der jedes Mal ausgelöst wird, wenn eine Auswahl für eine der anderen Aktivitäten erfolgt. –

Antwort

0

Ja, Sie könnten dafür ein Singleton verwenden. Es wäre etwas wie:

public class MenuData { 

    private static MenuData instance; 

    private boolean isItemASelected; 

    public static MenuData getInstance() { 
     if (instance == null) { 
      instance = new MenuData(); 
     } 
     return instance; 
    } 

    public boolean isItemASelected() { 
     return isItemASelected; 
    } 

    public void setItemASelected(boolean itemASelected) { 
     isItemASelected = itemASelected; 
    } 

} 

Allerdings würde ich dies nicht empfehlen. Diese Daten sind nur so lange verfügbar, wie sich Ihre Anwendung im Speicher befindet. Sobald Ihre App von Android gelöscht wird, werden alle Variablen gelöscht und der Status ist verloren.

Wenn Ihre Menüeinträge konstant sind, würde ich SharedPreferences empfehlen, um den Status zu speichern. Wenn sie dynamisch sind, verwenden Sie die SQL-Datenbank. Auf diese Weise bleiben die Optionen erhalten, auch wenn Ihre App getötet wird.