В ряде вопросов (, как этот ) я изучал, как "менять экраны" в моем приложении. У меня есть "заголовок" сверху, с 4 кнопками. Каждая кнопка предназначена для замены «контента» (т.е. экрана изменения):
+--------------------+
| menu with buttons |
+--------------------+
| |
| |
| C O N T E N T |
| |
| |
+--------------------+
Когда я нажимаю кнопку меню, я запускаю следующий код:
@Override
public void onClick(View v)
{
Intent myIntent = new Intent(BaseActivity.this, ActivityMain.class);
BaseActivity.this.startActivity(myIntent);
}
Как видите, startActivity выполняется. Теперь, если я не укажу "launchMode" для Activity, это означает, что launchMode = normal. Если launchMode == normal, это означает, что Activity будет заново создаваться каждый раз, когда я перемещаюсь, используя верхние кнопки заголовка, и это означает, что все данные, введенные в «элементы формы», ушли (или, по крайней мере, скрыты).
Итак, я нашел режим запуска "singleTask", который звучал довольно мило. Если я добавлю этот launchMode в свою активность, он не будет воссоздан при навигации по кнопкам, сохраняя состояние. Большой! Ну, пока я не прочитал это :
Как отмечалось выше, никогда не бывает более одного экземпляра действия "singleTask" или "singleInstance", поэтому ожидается, что экземпляр будет обрабатывать все новые намерения.
Я обнаружил, что это предложение означает, что может быть только одна Activity, для которой launchMode установлен в "singleTask" - если у меня более одного, она не будет работать (хотя ошибки компилятора нет).
Это означает, что я могу «сохранять состояние» только для одного занятия при переключении между экранами и обратно (*)
Еще раз , это действительно так должно работать?