2013-03-03 33 views
6

Có cách nào để bật và tắt thông báo bánh mì toàn cầu bằng hộp kiểm trong tùy chọn được chia sẻ không?Bật/tắt bánh mì nướng từ các tùy chọn được chia sẻ?

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

Tôi đã nghĩ có lẽ làm cho một lớp:

boolean showToast(){ 
//code 
} 

NHƯNG nghĩ, SO có thể có một giải pháp toàn cầu?

Tôi có nên sử dụng một loại hệ thống thông báo khác không?

Mọi suy nghĩ?

+0

Bạn đang ở trên con đường đúng đắn. Tôi đã giải quyết nó tương tự, với một nút tại các thiết lập của tôi Xem để quá nhỏ 'showToast'. Tôi đã thực hiện một wrapper xung quanh 'Toast.makeText()' để kiểm tra điều này mỗi lần mà không cần lặp lại 'if (showToast) {...}' mỗi lần. – ConcurrentHashMap

Trả lời

0

Tại sao bạn không đặt giá trị hộp kiểm trong tùy chọn được chia sẻ và sau đó sử dụng làm cờ, Ví dụ: nếu (cờ) {hiển thị bánh mì nướng}, không phải như vậy không?

0

Bạn chỉ có thể vô hiệu hóa hoặc kích hoạt các thông báo bánh mì nướng cho appplication của bạn như cách ur làm việc đó ... nhưng không phải trên toàn cầu cho tất cả các ứng dụng

0

Bạn có thể thử tạo một enum với một yếu tố -

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

} Và sau đó gọi -

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

Khi bạn wa nt để bật hoặc tắt - bạn chỉ có thể thực hiện điều đó trong phương thức makeToast makeToast().

0

sử dụng trênSharedPreferenceChangeListener.

1

Bạn có thể xem xét mở rộng Bánh mì nướng để tạo lớp tùy chỉnh đủ thông minh để đọc các sở thích của người dùng trước khi hiển thị bánh mì nướng.

Sau đó refactor mã của bạn để thay thế bánh mì nướng bằng SmartToast.

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

Vì vậy, thực hiện SmartToast.makeText() để trả về một thể hiện của SmartToast và ghi đè show() như sau:

@Override 
public void show() { 
    if (PreferenceManager.getDefaultSharedPreferences(context).getBoolean("showToast", true)) { 
     super.show(); 
    } 
} 
Các vấn đề liên quan