2017-08-12 66 views
0

我有我的活動三粒扣,當我點擊任意兩個都將得到禁止,但是當我回到我的活動,他們將不會恢復到以前的state.I試圖實現這種共享使用偏好但無法保持按鈕狀態。任何人都可以告訴我關於我在共享偏好中所犯的錯誤。 在這裏,我與你分享我的代碼。禁用按鈕永久的Android

在我的活動創建方法

spStateButton= getApplicationContext().getSharedPreferences("Button_State", 0); 
    spEditor = spStateButton.edit(); 

在活動

public void setButtonState(boolean enabled) { 
    spEditor.putBoolean("btn_state", enabled); 
    spEditor.commit(); 
} 

public boolean getButtonState(){ 
    return spStateButton.getBoolean("btn_state", true); 
} 

按鈕的地方

holder.btn_Fwd.setEnabled(getButtonState()); 
setButtonState(false); 
holder.btn_Rec.setEnabled(getButtonState()); 
setButtonState(false); 
+0

使用SharedPreference保存視圖狀態不是一個好習慣。 – BakaWaii

回答

0

您使用方法setButtonState(boolean enabled)將值保存到共享首選項,並且您始終使用參數調用該方法爲false。所以在共享首選項中,鍵值「btn_state」的值始終爲false。

所以,如果要啓用按鈕,下一次活動開始,請撥打類似 setButtonState(真);

您還可以使用Singleton類保存整個應用程序的狀態值。創建類如下

public class SingleTon { 

private static final SingleTon instance = new SingleTon(); 
private Boolean buttonState = true //initially visible 

private SingleTon(){} 

public static Boolean getButtonState(){ 
    return buttonState; 
} 

public void setButtonState(Boolean buttonState){ 
    return instance; 
    } 

    public SingleTon getInstance(){ 
     return instance; 
     } 
    } 
+0

但我想通過我的應用程序 –

+0

由於共享偏好禁用按鈕橫跨整個應用程序可用,這是什麼問題? –

+0

但我無法通過此實現。 –