有没有办法通过共享偏好设置中的复选框全局打开和关闭Toast通知?
PreferenceManager.setDefaultValues(this, R.xml.preferences, false);
boolean showToast = myPrefs.getBoolean("showToast",
true);
我在考虑上课:
boolean showToast(){
//code
}
但是想想,SO可能有全球解决方案吗?
我应该使用不同类型的通知系统吗?
有什么想法吗?
答案 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。