6

:) 私の RadioGroup の RadioButtons は、次のようなリンクでいっぱいの ArrayList (私のメイン アクティビティにある) から動的に作成されます。

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

次に、メイン アクティビティのメニュー ボタンから呼び出される「リンク」という新しいクラスを作成します。このクラスは、リンクごとに (スクロール ビューで) ラジオボタンを使用して適切なレイアウトを設定し、「go!」ボタンを押します。ページの下部にあるボタン (相対レイアウト)。

これは、1つのことを除いてすべてうまく機能します。戻るボタンを使用してアプリケーションを終了し、Android メニューのアイコンをクリックしてアプリケーションに戻ると、メイン アクティビティに移動し、メニューの「リンク」ボタンをクリックすると、毎回 2 倍になります。???

リンク 0リンク
1
リンク 2
リンク 0 (再び)
リンク 1 (再び)
リンク 2 (再び)

これにより、「リンク」アクティビティを離れてから戻ってくるたびに、リンクが一番下に追加されます。RadioGroup に入れる前に、links アクティビティの最後のセッションから生成されたすべてのラジオ ボタンをクリアするメソッドを呼び出す方法はありますか? 私はキャッシュを解放しようとしましたが、onPause()何もしていないようです。finish();RadioGroup.destroyDrawingCache();

4

3 に答える 3

12

次のように使用して、動的に作成されたラジオ ボタンを削除できます。

RadioGroup rg=(RadioGroup)findViewById(R.id.radioGroupnew1);
rg.clearCheck();
rg.removeAllViews();
于 2013-07-24T14:56:56.457 に答える
0

この「すべて削除」アプローチの代わりに(確かに可能です)、別の方法を試してみます-最初にラジオボタンを設定して戻るボタンを押すブレークポイントをコードに配置し、アプリに戻ってから、もう一度戻ってくださいアプリに戻るなど。

アプリケーションに戻るたびにブレークポイントがヒットする場合は、問題があります。たとえば、そのコードを現在の場所からOnCreateに移動して修正し、アクティビティの作成時に1回だけ呼び出されるようにします。それが不可能な場合は、「boolean mRadioButtonsPopulated」のようなクラス変数を使用します。これは、ラジオボタンのポピュレーションコードの直前にチェックされ、(最初の)ラジオボタンのポピュレーションが発生した後にtrueに設定されます。

于 2010-11-27T21:47:22.110 に答える
0

わかりました。 onDestroy() が呼び出された後でも、メモリ内の場所に ArrayList が残っていたと思います。これを修正するために私がしたことは、「.clear();」を呼び出すことだけでした。私のAndroidアプリケーションのメインアクティビティでインスタンス化した直後のListArrayで。このように、アプリケーションが開かれるたびに [配列リスト] がインスタンス化され、クリアされます。魅力のように機能します:)

于 2010-11-27T21:51:53.843 に答える