удалить динамически созданные радиокнопки из радиогруппы в Android
-
28-09-2019 - |
Вопрос
:) RadioButtons моей RadioGroup динамически создаются из ArrayList (который находится в моей основной деятельности), полного ссылок, подобных этому:
ArrayList = { "hxxp://helloworld.com", "hxxp://helloworld2.net", ..., "hxxp: //whatever.com" }
затем у меня есть новый класс под названием "links", который вызывается из кнопки меню в моей основной деятельности, которая устанавливает красивый макет с радиобубтоном для каждой ссылки (в scrollview) и кнопкой "перейти!" внизу страницы (относительный макет).
Все это отлично работает, за исключением одной вещи.Если вы выйдете из приложения, используя кнопку "Назад", и вернетесь в приложение, нажав на иконку в меню Android, вы перейдете к основному действию, затем нажмете кнопку "ссылки" в меню, и они будут удваиваться каждый раз.???вот так:
ссылка 0
ссылка 1
ссылка 2
ссылка 0 (снова)
ссылка 1 (снова)
ссылка 2 (снова)
При этом ссылки добавляются внизу каждый раз, когда вы возвращаетесь к действию "ссылки" после выхода.Есть ли какой-нибудь способ, которым я могу вызвать метод, чтобы очистить все переключатели, сгенерированные в последнем сеансе действия links, прежде чем помещать их в RadioGroup?Я попытался изменить свой onPause()
Для finish();
Я попытался освободить кэш с помощью RadioGroup.destroyDrawingCache();
кажется, ничто не может этого сделать.
Решение
Вместо этого подхода "удалить все" (который, безусловно, возможен) Я бы попробовал что-то другое - поместил точку останова в код, который сначала заполняет ваши переключатели, и нажал кнопку "Назад", затем вернулся в приложение, затем снова назад, снова обратно в приложение и т.д.
Если точка останова достигается каждый раз, когда вы снова переключаетесь в приложение, значит, это ваша проблема.Исправьте это, переместив этот код с того места, где он находится, например, в onCreate, чтобы он вызывался только один раз во время создания действия.Если это невыполнимо, то используйте некоторую переменную класса, такую как 'boolean mRadioButtonsPopulated', которая проверяется непосредственно перед кодом заполнения переключателей и получает значение true после того, как произошло заполнение (первого) переключателя.
Другие советы
Вы можете удалить свои радиопередачи, которые были динамически созданы, используя подобное:
RadioGroup rg=(RadioGroup)findViewById(R.id.radioGroupnew1);
rg.clearCheck();
rg.removeAllViews();
Я получил это, думаю, место в памяти осталось арарилиста там даже после того, как он был вызван. Все, что я сделал, чтобы исправить это, это называют ". Ярком ();" На Stoparray сразу после создания его в основной активности моего приложения Android. Таким образом, каждый раз, когда приложение открывается его [ArrayList], создается, затем очищается. Работает как очарование :)