保存按钮状态

时间:2013-10-13 01:33:08

标签: android

我有 关闭模拟器然后再次运行它时保存按钮状态的问题。 下面是onCreate和onDestory

中的代码
@Override
protected void onDestroy() {

    super.onDestroy();
    ViewGroup v=(ViewGroup) findViewById(R.id.GridLayout1);

    SharedPreferences setting= getSharedPreferences("MyPrefs",0);
    SharedPreferences.Editor editor=setting.edit();
    for(int i=2; i < ((ViewGroup)v).getChildCount(); i++) {
        View childView = ((ViewGroup)v).getChildAt(i);
        int resID = childView.getId();
        Button btn = (Button) findViewById(resID);
        editor.putString("value",btn.getText().toString());
        editor.commit();
    }
}

1 个答案:

答案 0 :(得分:3)

你是对的。

您在value的for循环的每次迭代中都会覆盖键onDestroy的值。

    for(int i=2; i < ((ViewGroup)v).getChildCount(); i++) {
        View childView = ((ViewGroup)v).getChildAt(i);
        int resID = childView.getId();
        Button btn = (Button) findViewById(resID);
        editor.putString("value",btn.getText().toString());
        editor.commit();
    }

您必须使用唯一键存储每个值,每个键对应一个唯一按钮,然后在onCreate中单独检索每个值。

要选择您的唯一密钥,我建议使用按钮的ID。

    for(int i=2; i < ((ViewGroup)v).getChildCount(); i++) {
        View childView = ((ViewGroup)v).getChildAt(i);
        int resID = childView.getId();
        Button btn = (Button) findViewById(resID);
        editor.putString(String.valueOf(btn.getId()),btn.getText().toString());
        editor.commit();
    }