Может случиться такая ситуация, когда вам нужно обновить все данные в компонентах Activity, но Вы прописали такую сложную логику, что уже не в силах разобраться, где что и как обновлять. Но вы знаете точно, что инициализация всего содержимого с новыми параметрами конструкторов по новой точно приведет к нужному результату.Так вот. Быстрое решение - заново перезапустить вашу Activity (при условии, что она не держит какие-то важные "рабочие" потоки)!
Решение, подсмотренное на ресурсе stackoverflow.com
Конечно же, не рекомендуется постоянно вести такую практику. Акция скоре одноразовая, желательно, чтобы вы заменили это другим кодом, а вашу архитектуру пересмотрели и переписали как более понятную и чистую.
Итак, быстрый и малозатратный по ресурсам устройства способ перезапуска Activity:
private void reload(int x, ... ВАШИ ПАРАМЕТРЫ)
{
Intent intent = getIntent();
intent.putExtra(Работаем с объектом Intent);//1
intent.putExtra(Работаем с объектом Intent);//2
intent.putExtra(Работаем с объектом Intent);//3
overridePendingTransition(0, 0);//4
intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);//5
finish();//6
overridePendingTransition(0, 0);//7
startActivity(intent);//8
}
Комментарии к коду:
В 1-3 строчках (пронумерованы условно в теле метода) мы работаем с объектом Intent, который запустит наш новый экземпляр такой же Activity. Строки 4-7 убирают всяческие переходы, анимацию и красоту. Таким образом, для пользователя будет отображаться как бы старая форма, что и была, но данные в ней будут новые! Никаких переходов, анимаций, перекидываний, вычислительные ресурсы на это не тратятся. Чудесно.
Вызываем данный метод из Activity, когда желаем обновиться.