1

みんな!ToggleButton の状態を保存しようとしています。実際、ユーザーがアプリケーションを再起動した後、またはこのアクティビティに戻った後、同じ状態にしたいと考えています。

しかし、たとえば、前のアクティビティに戻ってから、ToggleButton があるアクティビティに再度戻ると、ToggleButton のステータスが登録されていないことがわかります。誰かが私を助けることができますか?

ご覧のとおり、setDefaults を使用して ToggleButton の状態を保存し、getDefaults を使用して回復します。

public class OnOff extends Activity {

    ToggleButton toggle1;
    ToggleButton toggle2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.on_off);
        // Show the Up button in the action bar.
        setupActionBar();

        toggle1 = (ToggleButton) findViewById(R.id.ontoggle1);
        toggle1.setChecked(getDefaults("etatToggle",this));
        setDefaults("etatToggle", toggle1.isChecked(), this);
    }


    //Fonction appelée pour enregistrer en mémoire, ici en l'occurence l'état du ToggleButton: true ou false
    public static void setDefaults(String key, Boolean value, Context context)
    {
        SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
        SharedPreferences.Editor editor = prefs.edit();
        editor.putBoolean(key, value);
        editor.commit();
    }

    //Fonction appelée pour récupérer ce qui a été saisi en mémoire
    public static Boolean getDefaults(String key, Context context)
    {
        SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
        return preferences.getBoolean(key, true);
    }
}
4

2 に答える 2

3
@Override
public void onStart(){
    super.onStart();

    toggle1.setChecked(getDefaults("etatToggle",this));
}


@Override
public void onStop(){
    super.onStop();

    setDefaults("etatToggle", toggle1.isChecked(), this);
}
于 2013-05-16T11:52:36.263 に答える
2

あなたは以下を呼び出しているので

    setDefaults("etatToggle", toggle1.isChecked(), this);

ではonCreate()、アプリケーションを起動するたびに、アプリケーションが閉じられToggleButtonたときの以前の状態に関係なく、 がチェックされます。ToggleButtonしたがって、このコード行は次のように配置する必要があります-

    toggle1.setOnClickListener(new View.OnClickListener() {

    public void onClick(View v) {

           setDefaults("etatToggle", toggle1.isChecked(), OnOff.this);
    }
});

をクリックするとの状態ToggleButtonが保存ToggleButtonされるため、アプリケーションを再起動したときに は以前の状態を保持します。

于 2013-05-16T11:56:03.120 に答える