2013-03-03 14 views
6

C'è un modo per attivare e disattivare globalmente le notifiche di pane tostato con una casella di controllo nelle preferenze condivise?Attiva/disattiva Toast dalle preferenze condivise?

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

Stavo pensando che forse fare una classe:

boolean showToast(){ 
//code 
} 

ma il pensiero, quindi potrebbe avere una soluzione globale?

Devo utilizzare un diverso tipo di sistema di notifica?

Qualche idea?

+0

Sei sulla strada giusta. L'ho risolto in modo simile, con un pulsante nelle mie impostazioni Visualizza toogle the 'showToast'. Ho creato un wrapper attorno a 'Toast.makeText()' per controllarlo ogni volta senza la necessità di ripetere ogni volta 'if (showToast) {...} '. – ConcurrentHashMap

risposta

0

Perché non si inserisce il valore della casella di controllo nelle preferenze condivise e quindi l'uso è come una bandiera, Se (flag) {show toast} ad esempio, non è lo stesso?

0

Si può solo disabilitare o abilitare le notifiche toast per il tuo appplication come il modo in ur farlo ... ma non a livello globale per tutte le applicazioni

0

Si può provare a creare un enum con un elemento -

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(); 
} 

} E poi per chiamare -

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

Quando si WA nt per accendere o spegnere - puoi semplicemente farlo nel metodo makeToast().

0

utilizza onSharedPreferenceChangeListener.

1

Si può prendere in considerazione l'estensione di Toast per creare una classe personalizzata che sia abbastanza intelligente da leggere le preferenze dell'utente prima di mostrare il brindisi.

Quindi refactoring il codice per sostituire Toast con SmartToast.

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

Quindi implementare SmartToast.makeText() per restituire un'istanza di SmartToast e sovrascrivere show() come segue:

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