удалить динамически созданные радиокнопки из радиогруппы в Android

StackOverflow https://stackoverflow.com/questions/4293981

Вопрос

:) 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], создается, затем очищается. Работает как очарование :)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top