2011-12-16 8 views
2

現在のレイアウトに基づいて、アクティビティのレイアウトを切り替えたり、フィールドにデータを設定したりするにはどうすればよいですか?例えばAndroidのレイアウトを条件付きで切り替える

ビューをロードするためのビュー内のロジックがある場合:他のコードが呼び出された場合

if(category == 1){ 
     setContentView(R.layout.layout1); 
    }else{ 
     setContentView(R.layout.layout2); 
    TextView title = (TextView) findViewById(R.id.titleTV); 
     title.setText("myTitle"); 

    } 

ビューはStringにタイトルのTextViewを設定することはありません。

条件付きで2つのビュー間を移動するにはどうすればよいですか?

+2

2つのビューではなく2つのアクティビティを実行しますが、シナリオに関する詳細情報が必要です。 – Blundell

答えて

2

を参照してください。上記の選択肢の利点は、各断片には独自のライフサイクルがあることです。そのため、各ビューに関連するすべてのコードをその断片に委譲し、主な活動をきれいに保つことができます。

これを行うには、アクティビティのFrameLayoutをフラグメントのプレースホルダとして使用します。フラグメントはリスナー・パターンを使用してアクティビティーと通信できます。

1

場合、あなたは次のような様々な可能性、調べることができますViews違いを越え反転したい:互換ライブラリを経由して

  • ViewPagerを(http://android-developers.blogspot.com/2011/08/水平ビュースワイプ-WITH-viewpager.html)
  • ViewFlipper又はViewSwitcher(http://developer.android.com/reference/android/widget/ViewFlipper.html、http://developer.android.com/reference/android/widget/ViewSwitcher.html
  • あるいは単純FrameLayout( http://developer.android.com/reference/android/widget/Fr ameLayout.html)

これは今のところ役立ちます。あなたが何か具体的なものが必要な場合は、それを撃ってください!

+1

私はViewSwitcherは素晴らしいと思います。私はいつもそれを使用し、アニメーションを追加するのは簡単です。 – sgarman

+1

"setContentViewは一度しか呼び出せません!"それは間違いです。それを複数回呼び出すことができます。 – MrZander

+0

申し訳ありませんが、削除して投稿が修正されました。 –

0

あなたは断片を考慮しましたか?条件付きレイアウトを処理するためのものです。彼らの基本的なモチベーションは画面のサイズなどですが、あなたの問題にも適合します。別の方法としては、Fragmentを使用することです

関連する問題