2012-01-01 8 views
3

自分のアクティビティでcontentViewを動的に設定したいと思います。 私はcontentViewとしてxmlを使用しますが、別の時にはcontentViewとしてカスタムビューを使用します。Androidの変更setContentView

しかし、私はどのようにcontentViewを変更するのですか?

私は、ViewFlipperはこれを行うことができますが、viewFlipperはXMLファイルに実装されていると読んでいます。このViewFlipperでは、さまざまなビューを追加できます。

しかし、私はそれらを最初から知っていないので、私はそれらをすべてxmlファイルに書き込むことはできません。 ご存知ですか?

あなたは

+0

正確に何をしたいですか?ユーザーに画面をどのように見せたいかを説明してください。 –

+0

たとえば、ユーザが "Test"というアクティビティを呼び出すと、このテストはRadioButtonsを持つViewの存在します。ユーザは彼が続けることができるRadioButtonを終了し、そのDragButtonsまたはDragable Elements再び..私は技術的にビューを切り替えるしたい... それぞれのビューの新しいアクティビティを作成することは賢明だとは思わない... – krackmoe

+1

Ted Hoppが言っていることは完璧です。すべての必要なレイアウトを1つのXMLに収めることができ、必要に応じて個々のレイアウトを表示/非表示にすることができます(例:ラジオボタンとドラッグ可能エレメントの2つのレイアウトがあります)。 –

答えて

9

あなただけではなくonCreateで、いつでも*setContentViewを呼び出すことができますありがとうございました。あなたが望むすべてのビューを別々のXMLファイルに定義し、切り替えるときは関連するIDを渡すだけです。新しいレイアウトをコードで動的に定義する場合は、setContentViewと呼び出して、新しいレイアウトのルートビューを渡します。

*技術的には、イベントスレッドで実行しているときはいつでもsetContentViewに電話することができます。それ以外の場合は、ハンドラを使用して呼び出す必要があります。

+0

また、setContentViewをもう一度呼び出すと、どのメソッドでジャンプしますか? onCreateで再び? – krackmoe

+3

@krackmoe - 私はその質問を理解していません。あなたはどこにもジャンプしません。モデルでは、アプリでコードを実行するイベントが発生します(ユーザーがボタンを押したなど)。このコードはレイアウトを変更する時であると判断し、 'setContentView'を呼び出します。フレームワークはディスプレイの更新を担当します。あなたのコードは、新しいイベントが起こるのを待つことに戻ります。 –