Как заставить весь макет View обновить? - PullRequest
161 голосов
/ 13 мая 2011

Я хочу принудительно перерисовать / обновить основное представление ресурсов макета, скажем, методом Activity.onResume (). Как я могу это сделать ?

Под основным представлением макета я имею в виду тот («R.layout.mainscreen» ниже), который вызывается в моем Activity.onCreate (), например: -

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mainscreen);
}

Ответы [ 16 ]

2 голосов
/ 13 мая 2011

Кажется, это известная ошибка .

0 голосов
/ 05 июля 2019

Чтобы очистить представление, расширяющее ViewGroup, вам просто нужно использовать метод removeAllViews()

Точно так же (если у вас ViewGroup с именем myElement):

myElement.removeAllViews()
0 голосов
/ 08 апреля 2018

Просто снова вызовите действие, используя намерение. Например, чтобы обновить макет MainActivity, сделайте так:

startActivity(new Intent(MainActivity.this, MainActivity.class));
0 голосов
/ 25 января 2018

Не уверен, что это хороший подход, но я просто каждый раз так называю:

setContentView(R.layout.mainscreen);
0 голосов
/ 04 октября 2016

Вот как я обновлял свой макет

Intent intent = getIntent();
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_NO_ANIMATION);
finish();
startActivity(intent);
0 голосов
/ 10 апреля 2015

Я не знаю, безопасно это или нет, но это сработало для меня.Я как-то сам столкнулся с этой проблемой и попробовал invalidate() и requestLayout(), но безрезультатно.Так что я просто перезвонил своему onCreate(null), и это сработало.Если это небезопасно, пожалуйста, дайте мне знать.Надеюсь, это кому-нибудь поможет.

...