2011-12-07 9 views
0

私はメニュー付きのヘッダーを持ち、UIの残りの部分のみを変更できるようにしたいと考えています(ヘッダーとメニューは再ロードされません。メニューのオプション)。フラグメントを使用してUIの一部を変更する

******************************************* 
*    header     * 
******************************************* 
* option1 | option2 | option3 | option4...* 
******************************************* 
*           * 
*   content to be updated   * 
*   according to the option  * 
*   selected in the menu   * 
*           * 
*           * 
******************************************* 

私はViewFlipperを使用して、コンテンツのレイアウトを追加/削除するつもりだったが、私は複雑なコンテンツのために、フラグメントを使用する方がよいかもしれないことを読みました。私が見た唯一の例は、TabHostとTabWidgetの使用ですが、私はTabWidgetを使用しない独自のメニューを持っています。

メニューのオプションごとに1つのフラグメントでViewFlipperを使用できますか?

すべてのヘルプ/提案/ポインタ歓迎...

おかげ

答えて

0

あなたが実際にこれを行うにはViewFlipperを必要としません。

フラグメントについては、既存のフラグメントを置き換えるメソッドを呼び出すだけで、既存のフラグメントを別のフラグメントに置き換えることができます。これは、(Linear、Relative、あなたが好きな方でも、私が気づいている限り問題はありません)レイアウトを使用し、それを完全にフラグメントに置き換えることによって動作します。

レイアウトにmainContentという名前を付けたとします。メインレイアウトファイルに埋め込まれたLinearLayoutのメニューです。その後、次の方法を使用して、それに(例えば、OptionOne)の断片を追加することができます。

FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
     ft.add(R.id.mainContent, new OptionOne()); 
     ft.commit(); 

あなたがOptionTwoの内容によって、それを交換したい場合、あなたは、単にこれを使って、それを置き換えることができます。

FragmentTransaction ft = getActivity().getSupportFragmentManager() 
       .beginTransaction(); 
ft.replace(R.id.mainView, new Biography(appID, formID, title)) 
        .addToBackStack(null); 
ft.commit(); 

注:私はこのためにFragmentsの互換バージョンを使用していますので、コードが異なる場合があります。 また、このメソッドを使用できるようにするには、このように使用するすべての現在のアクティビティをFragmentsに変更する必要があります。

関連する問題