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 回答