【问题标题】:remove dynamicallly created radiobuttons from a radiogroup in Android从 Android 的单选组中删除动态创建的单选按钮
【发布时间】:2010-11-27 21:22:17
【问题描述】:

:) 我的 RadioGroup 的 RadioButtons 是从一个 ArrayList(它位于我的主要活动中)动态创建的,其中充满了如下链接:

ArrayList = { "hxxp://helloworld.com", "hxxp://helloworld2.net", ..., "hxxp://whatever.com" }

然后我有一个名为“链接”的新类,它从我的主要活动中的菜单按钮调用,它设置了一个很好的布局,每个链接(在滚动视图中)和一个“开始!”页面底部的按钮(相对布局)。

这一切都很好,除了一件事。如果您使用后退按钮退出应用程序,然后通过单击 Android 菜单中的图标返回应用程序,您将进入主活动,然后单击菜单中的“链接”按钮,它们每次都会加倍。 ???像这样:

链接 0
链接 1
链接 2
链接 0(再次)
链接 1(再次)
链接 2(再次)

每次离开后返回“链接”活动时,这会将链接附加到底部。在将它们放入 RadioGroup 之前,有什么方法可以调用一种方法来清除从链接活动中的最后一个会话生成的所有单选按钮?我尝试将我的onPause() 更改为finish(); 我尝试使用RadioGroup.destroyDrawingCache(); 释放缓存似乎没有任何作用。

【问题讨论】:

    标签: android dynamic radio-button radio-group persist


    【解决方案1】:

    您可以删除使用以下方式动态创建的单选按钮:

    RadioGroup rg=(RadioGroup)findViewById(R.id.radioGroupnew1);
    rg.clearCheck();
    rg.removeAllViews();
    

    【讨论】:

      【解决方案2】:

      我会尝试不同的方法,而不是这种“删除所有内容”的方法(这肯定是可能的) - 在代码中放置一个断点,首先填充您的单选按钮并按下后退按钮,然后返回应用程序,然后再次返回,再次返回应用等。

      如果每次切换回应用程序时都会遇到断点,那么这就是你的问题。例如,通过将该代码从它所在的位置移动到 OnCreate 来修复它,因此它只在 Activity 创建时调用一次。如果这不可行,则使用一些类变量,例如“boolean mRadioButtonsPopulated”,它在单选按钮填充代码之前进行检查,并在(第一个)单选按钮填充发生后设置为 true。

      【讨论】:

      • 你说得对,我只是希望 RadioGroup 有更好的方法,比如“refresh();”或“clearButtons();”这对于那些从项目 apk 中的 XML 文件自动生成按钮的人来说太棒了。
      【解决方案3】:

      我知道了,我猜内存中的位置即使在调用 onDestroy() 之后也将 ArrayList 留在了那里。我为解决这个问题所做的只是调用“.clear();”在我的 Android 应用程序的主 Activity 中实例化它之后立即在 ListArray 上。这样,每次打开应用程序时,它 [arraylist] 都会被实例化,然后被清除。像魅力一样工作:)

      【讨论】:

      • 嘿,确实如此 - 但请考虑每次单选按钮组时重建所需的额外处理。否则,这是您的设计选择
      • 是一句话吗? “想想每次单选按钮组重建所需的额外处理”?加上单选按钮组是应用程序用户的直接结果。这意味着由于输入而导致事物进入或退出。当然我需要“每次重建单选按钮组”。谢谢。
      猜你喜欢
      • 1970-01-01
      • 2010-09-13
      • 1970-01-01
      • 2021-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 2015-05-14
      相关资源
      最近更新 更多