2013-03-03 44 views
6

是否有一种方法可以在共享首选项中使用复选框全局打开和关闭烤面包通知?从共享首选项开启/关闭Toast?

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

我想也许制作类:

boolean showToast(){ 
//code 
} 

,但认为,SO可能有一个全球性的解决方案?

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

有什么想法?

+0

你是在正确的道路上。我已经用类似的方法解决了这个问题,在我的设置View上点击一个按钮来查看'showToast'。我在'Toast.makeText()'中做了一个包装,每次都检查一次,而不需要每次重复'if(showToast){...}'。 – ConcurrentHashMap 2013-03-03 16:57:31

回答

0

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

0

您只能禁用或启用您的参加办法像乌尔做它的方式Toast通知......但不是全局的所有应用程序

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

当你はnt打开或关闭 - 您可以简单地在makeToast()方法中执行此操作。

0

使用onSharedPreferenceChangeListener。

1

您可以考虑扩展Toast以创建您的自定义类,该类可以在显示敬酒之前足够聪明地阅读用户偏好设置。

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

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

所以实现SmartToast.makeText()返回SmartToast的实例,并覆盖显示()如下:

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