6

共有設定のチェックボックスを使用してトースト通知をグローバルにオンまたはオフにする方法はありますか?

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

私はおそらくクラスを作ることを考えていました:

boolean showToast(){
 //code
}

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

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

何かご意見は?

4

5 に答える 5

1

Toast を拡張して、トーストを表示する前にユーザー設定を読み取るのに十分スマートなカスタム クラスを作成することを検討してください。

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

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

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

@Override
public void show() {
    if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean("showToast", true)) {
        super.show();
    }
}
于 2013-03-03T20:40:16.487 に答える
0

チェックボックスの値を共有設定に入れて、フラグとして使用してみませんか。たとえば、If(flag){show toast}は同じではありませんか?

于 2013-03-03T16:55:38.730 に答える
0

トースト通知は、アプリケーションの場合と同じように無効または有効にすることしかできませんが、すべてのアプリケーションでグローバルに有効にすることはできません。

于 2013-03-03T16:57:55.657 に答える
0

onSharedPreferenceChangeListenerを使用します。

于 2013-03-03T17:38:49.520 に答える
0

1つの要素で列挙型を作成してみることができます-

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");

オンまたはオフにする場合は、makeToast()メソッドで簡単に実行できます。

于 2013-03-03T17:03:32.517 に答える