2017-08-12 4 views
0

2つのうちのいずれかをクリックすると、私の活動に3つのボタンがありますが、どちらも無効になりますが、私の活動に戻ると、前の状態に戻ることはありません。ボタンの状態を保持することができませんでした。誰も私が共有設定で行っている間違いについて教えてもらえますか? ここで私のコードをあなたと共有しています。アンドロイドで永久にボタンを無効にする

私の活動方法活動に

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

シングルトンクラスを使用して、アプリケーション間でステータス値を保存することもできます。以下のようにクラスを作成してください

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

しかし、私はこれでこれを達成できませんでした。 –

関連する問題