2011-07-06 21 views
2

私は互換性ライブラリを使用してタブレットアプリを構築していて、奇妙なことに気づきません。 1つのアクティビティで、タブ(タブAとタブB)2つ、フラグメント3(フラグメントA1、A2、B)があります。タブAに関連付けられたActionBar.TabListenerは、フラグメントA1およびA2の追加および削除を処理し、タブBに関連付けられたActionBar.TabListenerは、タブBの追加および削除を処理します。Android FragmentTransaction、ActionBar Tabs、Multiple Fragments

アクティビティを起動すると(タブAが選択され、フラグメントA1とA2が左から右に正しく表示されます)、タブBをクリックします(フラグメントA1とA2は削除され、フラグメントBはまだ正しく表示されている)、Tab Aをもう一度クリックしてください! フラグメントA1とA2が表示されますが、逆の順序で表示されます。A2とA1!

誰もこの奇妙な経験はありますか?タブBを選択してからタブAをもう一度選択すると、正しい順序になるように再び反転し、サイクルが続行されます。 this articleによれば、「複数のフラグメントを同じコンテナに追加する場合は、追加する順序によってビュー階層に表示される順序が決まります」という不思議な結果が出ています。

アイデア?前もって感謝します!

答えて

3

この記事では、「複数のフラグメントを同じコンテナに追加している場合は、追加する順序によってビュー階層に表示される順序が決まります。それは今の場合です。

個人的には、私はそれにカウントしません。

たとえば、水平のLinearLayoutを使用しているとします。あなたの現在のコードはおそらく両方のフラグメントをLinearLayoutに入れています。私がアプローチする方法は、FrameLayoutsが既にLinearLayoutにあり、各フラグメントをFrameLayoutsの1つに入れることです。

+0

うーん、それは素晴らしいアイデアです!そして、1つのフラグメントのみを表示したいときは、2番目のFrameLayoutを隠す(重みを0に設定する)だけです!私はこれを今すぐ試さなければならないでしょう(今は別のプロジェクトに行っています)。私たちは、ドキュメンテーションが何を言っているのかを確信できないと思っているのですか?それは単純にバグがあるか、FragmentTransactionsの仕組みについて実際に論理的なものがあると思いますか? –

+0

@Shep Shapard:「なぜドキュメンテーションが何を言っているのか分からないのでは? - 私が見たサンプルコードは引用されたステートメントに依存しないためです。それを超えて、それはちょうど腸の感覚です。 – CommonsWare

+0

ええ...「最先端」に取り組むことは、文書化されていない奇妙なことを左右に扱うため、かなり面倒です。ところで、あなたのソリューションは機能しました!ありがとう! –