2013-10-13 4 views
0

У меня возникли проблемы с сохранением состояния кнопок после закрытия эмулятора, а затем запустите его снова. Heres код в 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

Вы правильно.

Вы переписываете значение для ключа 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.

Чтобы выбрать свой уникальный ключ, я бы предложил использовать идентификатор кнопки.

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

+1 для использования идентификатора кнопки в качестве ключа. Ницца. Если вы добавили изменения для onCreate(), это был бы отличный ответ! – Simon

Смежные вопросы