2013-10-13 140 views
0

我遇到 保存按鈕狀態的問題一旦關閉模擬器然後再次運行。 繼承人中的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

不要使用'onDestroy()'。改用'onPause()'。如果你完成()你的活動,'onDestroy()'是唯一可靠的。主要的問題是你只在你的循環中保存一個值,這將是最後一個值。我懷疑你的意思是爲每個按鈕使用一個值。 – Simon

回答

3

你是正確的。

您在覆蓋onDestroy for循環的每次迭代中覆蓋鍵value的值。

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(); 
    } 
+1

使用按鈕ID作爲鍵。尼斯。如果你添加了onCreate()的修改,這將是一個很好的答案! – Simon