0
私は、以下のようにコンテナパネルに動的にビューを追加するJavaアプリケーションを持っています。android:レイアウトにコンポーネントを動的に追加する
void addBoard(int ID) {
BoardPanel p = new BoardPanel(myManager,ID);
setAutoLayout();
containerPanel.add(p);
containerPanel.repaint();
}
これをAndroidアプリケーションに変換しようとすると、addViewが呼び出されたときにハングアップします。何が問題ですか?彼が好きな人は1000ビュー(BoardPanels)を追加して、XMLレイアウトを使用できないことに注意してください。
void addBoard(int ID) {
BoardPanel p = new BoardPanel(context,myManager,ID);
Log.i("Info", "Going to add view");
containerPanel.addView(p);
Log.i("Info", "Added");
containerPanel.postInvalidate();
}
おかげ
更新:問題はAegonisが指摘したようにスレッド化コードが原因のようです。
私も「containerPanel」と「BoarPanel」のためのLinearLayoutを使用。私の活動はすでに開始されており、ビューが表示されています。しかし、後でユーザーがボタンをクリックしたときにコンテナにビューを追加したい場合は、addViewでハングするため、不可能である可能性があります。また、ユーザーが別のボタンをクリックしたときにコンテナ内のすべてのビューを消去したいとします。そのようなことをアンドロイドで行うことは可能でしょうか? – user1382302
あなたが何を記述しているのか確かに完全に可能でなければなりません。私は問題があなたが提供するコードにないと思う。これはすべてメイン(UI)スレッドで行われますか?あなたのLogCatに、より多くの情報を提供する可能性のある例外またはメッセージはありますか?もしそうなら:あなたの投稿を更新してください。私たち/他の人たちがあなたの問題を解決するのに役立ちます。 – gleerman
ありがとう!実際、私は問題であるスレッドコードを使用しました。しかし、私はそれがinvokeLaterをしなかったにもかかわらず、なぜそれがJavaコードで動作するのだろうかと思います。 runOnUIthreadを追加した後、アンドロイドコードが機能しました。 – user1382302