Может случиться такая ситуация, когда вам нужно обновить все данные в компонентах 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, когда желаем обновиться.
Так вот. Быстрое решение - заново перезапустить вашу 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, когда желаем обновиться.
Casino site, casino site for all of your favourite UK casino games
ОтветитьУдалитьCasino site, casino site for all your favourite UK casino luckyclub.live games · Lucky Club Casino · BONUS: 100% first deposit bonus up to · Big Time Gaming