从共享首选项打开/关闭Toast?

时间:2013-03-03 16:50:19

标签: android sharedpreferences toast

有没有办法通过共享偏好设置中的复选框全局打开和关闭Toast通知?

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

我在考虑上课:

boolean showToast(){
 //code
}

但是想想,SO可能有全球解决方案吗?

我应该使用不同类型的通知系统吗?

有什么想法吗?

5 个答案:

答案 0 :(得分:1)

您可以考虑扩展Toast来创建自定义类,该类足够智能,可以在显示吐司之前读取用户首选项。

然后重构您的代码以使用SmartToast替换Toast。

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

答案 1 :(得分:0)

为什么不将复选框值放在共享首选项中然后使用is作为标志,If(flag){show toast}例如,这不是一样吗?

答案 2 :(得分:0)

您只能为您的应用程序禁用或启用Toast通知,例如您执行此操作的方式...但不是全局适用于所有应用程序

答案 3 :(得分:0)

您可以尝试使用一个元素创建枚举 -

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()方法中执行此操作。

答案 4 :(得分:0)

使用onSharedPreferenceChangeListener。