在同一活动中返回或重新启动应用程序后保存我的togglebutton的状态

时间:2013-05-16 11:14:51

标签: android

大家好!我尝试保存我的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);
    }
}

2 个答案:

答案 0 :(得分:3)

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

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


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

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

答案 1 :(得分: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将在应用程序再次启动时保留其先前的状态。