У меня есть приложение для Android, которое позволяет пользователю динамически добавлять свои собственные кнопки в макет. Мне нужно сделать так, чтобы после закрытия и повторного открытия приложения эта динамически добавленная кнопка вернется к макету. Вместо загрузки макета по умолчанию.Сохранение целого состояния активности
В настоящее время я динамически добавлять кнопки через ActionBar приложения:
if (id == R.id.add_button)
{
String string = "Adding Button in Progress";
Toast.makeText(getApplicationContext(), string, Toast.LENGTH_SHORT).show();
Button myButton = new Button(this);
myButton.setText("Button");
RelativeLayout layout = (RelativeLayout)findViewById(R.id.Layout1);
layout.addView(myButton);
//myButton.setVisibility(View.VISIBLE);
return true;
}
Это создает кнопку штраф, однако, когда приложение закрыто и вновь открыт, он запускает на раскладку по умолчанию.
Я провел некоторое исследование по тому, как приложение сохраняет и перезагружает обновленный макет. Кажется, мне нужно использовать onSaveInstanceState. Вот то, что я до сих пор с точки зрения пытаются сохранить макет:
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
// Save the app state here:
savedInstanceState.putAll(savedInstanceState);
super.onSaveInstanceState(savedInstanceState);
}
И вот что у меня есть с точки зрения пытаются «перезагрузить/восстановить», сказал макет. Обратите внимание, что я не использую onRestoreInstanceState, а я делаю это через OnCreate метод:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.activity_main);
// Check whether we're recreating a previously destroyed instance
if (savedInstanceState != null) {
// Restore value of members from saved state
//savedInstanceState.get(savedInstanceState);
}
else
{
//initialize members with default values for a new instance
setContentView(R.layout.activity_main);
}
}
Я не уверен, если я сохранения/загрузки правильно, но какие-либо советы о том, как я могу решить эту задачу был бы весьма признателен.
Спасибо за ваше время!
P.S. Я все еще довольно новый участник, поэтому я не мог комментировать/задавать вопросы о существующих потоках.
Я знаю, что есть много информации о попытке загрузить/сохранить макеты, однако в моем случае мне нужно, чтобы она сохранила кнопку, а не строку текста пользователя. Другими словами, это не фиксированное значение, которое мне нужно сохранить. Если пользователь добавляет n кнопок, когда приложение выйдет и перезагрузится, оно должно иметь те же 3 кнопки.
Сочетание ViewStub & SharedPreferences решит вашу проблему. – VVB
@VVB: \t благодарит за ответ. Раньше я пытался посмотреть в SharedPreferences, но был отвергнут из-за того, что я не уверен, как представить состояние активности (а именно недавно добавленные кнопки) в качестве пары ключ-значение, которая, как представляется, требует SharedPreferences. – organizedchaos