2013-03-03 5 views
6

Gibt es eine Möglichkeit, Toastbenachrichtigungen mit einem Kontrollkästchen in gemeinsamen Voreinstellungen global ein- und auszuschalten?Toast ein-/ausschalten von gemeinsamen Einstellungen?

PreferenceManager.setDefaultValues(this, R.xml.preferences, false); 
     boolean showToast = myPrefs.getBoolean("showToast", 
       true); 

Ich dachte, vielleicht eine Klasse machen:

boolean showToast(){ 
//code 
} 

dachte aber, SO könnte eine globale Lösung?

Sollte ich eine andere Art von Benachrichtigungssystem verwenden?

Irgendwelche Gedanken?

+0

Sie auf dem richtigen Weg sind. Ich habe es ähnlich gelöst, mit einem Knopf in meinen Einstellungen Ansicht, um den 'showToast' anzuzeigen. Ich habe einen Wrapper um 'Toast.makeText()' erstellt, um dies jedes Mal zu überprüfen, ohne jedes Mal das 'if (showToast) {...}' wiederholen zu müssen. – ConcurrentHashMap

Antwort

0

Warum setzen Sie den Checkbox-Wert nicht in die gemeinsamen Einstellungen und verwenden Sie dann als Flag, Ist (Flag) {show toast} zum Beispiel, ist das nicht das gleiche?

0

Sie können nur Toast-Benachrichtigungen für Ihre appplication die Art, wie es ur tun ... aber nicht global für alle Anwendungen

0

Sie können versuchen, eine Enum mit einem Element zu schaffen deaktivieren oder aktivieren -

public enum YourSingleton { 
INSTANCE; // element in this enum 

public static void makeToast(Context context, String msg) { 
    Toast toast = Toast.makeText(context, msg, Toast.LENGTH_LONG); 
    toast.show(); 
} 

} Und dann zu nennen -

YourSingleton .makeToast(this, "Toast Message"); 

Wenn Sie wa nt ein- oder ausschalten - Sie können dies einfach in der makeToast() Methode tun.

0

Verwenden Sie onSharedPreferenceChangeListener.

1

Sie können erwägen, Toast zu erweitern, um Ihre benutzerdefinierte Klasse zu erstellen, die intelligent genug ist, um die Benutzereinstellungen zu lesen, bevor der Toast angezeigt wird.

Dann refaktorieren Sie Ihren Code Toast mit SmartToast zu ersetzen.

SmartToast.makeText(this, "message", Toast.LENGTH_SHORT).show();

So SmartToast.makeText() implementieren eine Instanz von SmartToast zurückzukehren und zeigen außer Kraft setzen() wie folgt:

@Override 
public void show() { 
    if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean("showToast", true)) { 
     super.show(); 
    } 
}