2013-03-03 16 views
6

共有環境設定のチェックボックスでトースト通知をグローバルにオンまたはオフに切り替える方法はありますか?共有設定からトーストを有効/無効にしますか?

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

私は多分クラスを作ることを考えていた:

boolean showToast(){ 
//code 
} 

しかし考え、SOグローバルなソリューションを持っているのでしょうか?

別の種類の通知システムを使用する必要がありますか?

どのような考えですか?

+0

をあなたは正しい道にしています。私はそれを同様の方法で解決しました。私の設定のボタンで 'showToast'をView to toogleにします。私は毎回 'if(showToast){...}'を繰り返す必要なく、毎回これをチェックするために 'Toast.makeText()'のラッパーを作っています。 – ConcurrentHashMap

答えて

0

共有設定でチェックボックスの値を入れてからisをフラグとして使うのはなぜですか(たとえば、{show toast})これは同じではありませんか?

0

あなただけが一つの要素を持つ列挙型を作成しようとすることができ、すべてのアプリケーションに対してグローバル

0

を有効または無効にトースト通知をごappplicationのためにそれをやってウル方法のように...しかし、ことはできません -

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(); 
} 
その後、

} とコールする -

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

あなたWA ntをオンまたはオフにすることができます。makeToast()メソッドで簡単に行うことができます。

0

は、onSharedPreferenceChangeListenerを使用します。

1

トーストを表示する前にユーザーの設定を読むのに十分なスマートなカスタムクラスを作成するためにToastを拡張することを検討することがあります。

次にToastをSmartToastに置き換えるコードをリファクタリングします。

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

次のように)(SmartToastのインスタンスとオーバーライドショーを返すようにSmartToast.makeText()を実装します。

@Override 
public void show() { 
    if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean("showToast", true)) { 
     super.show(); 
    } 
} 
関連する問題