我有 关闭模拟器然后再次运行它时保存按钮状态的问题。 下面是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();
}
}
答案 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();
}