2

私が作成したiOSアプリケーションをAndroidに移植する方法を学習中です。 ActivityGroupまたはFragmentActivityのいずれであるかに関わらず、複数のアクティブなアクティビティを一度に画面上に表示する方法を理解する上で問題があります。 ActivityGroupは廃止されましたが、ほとんどの場合、最善のアプローチのようです。フラグメントアクティビティの処理

詳細を知る前に、適切な(または最良の)アプローチを決定する助けをいくつか使用することができます。ここで

は、私が作成しようとしていますものです:

アプリは3種類の視覚的なセクションに分割する必要があります:持続ダイナミックバナーの 1)トップ50dp。 2)他のアクティビティへのナビゲーションを可能にし、自身を置き換えるアイコンを持つビューページダッシュボードの中央にあるメインコンテンツエリア。 3)ボトム30 dpミュージックプレーヤーバー。

本質的には、広告バーとプレーヤバーはメインのコンテンツ領域とは独立しています。例えば、メインコンテンツエリアでボタンを押すと、トラックのリストビュー、ウェブビュー、マップビューなどの新しいアクティビティにメインコンテンツエリアを置きたいと思います。戻るボタンは、メインコンテンツ領域をダッシュ​​ボードビューページャに移動します。

メインのコンテンツ領域をフルスクリーンにするためにトップバーとボトムバーを隠すことができる場合もあります。また、3つのすべてを視覚的に置き換えるフルスクリーンのアクティビティを希望するケースもあります

私は、FragmentActivityによって制御される上部の断片、中間のビューページ、および下部の断片にアプリケーションを分けるFragmentActivityをまとめることができましたが、これは次のように思えますフラグメントがアクティビティそのものではなく、ビュー・ページャを新しいアクティビティに置き換えると、FragmentActivity自体全体を置き換える必要があるため、最良のアプローチではありません。

このフォーマット(2.1以降のサポート)を実装するための最良のレイアウト手法は何でしょうか。

おかげで、 ジェームズ

追加現在のコード:

main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 
    <fragment 
     android:name="com.dmi.AnywhereArtist.AdFragment" 
     android:layout_width="320dp" 
     android:layout_height="50dp" 
     android:id="@+id/ad_fragment" > 
    </fragment> 
    <android.support.v4.view.ViewPager 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:id="@+id/main_pager" 
    android:layout_weight="100" 
    android:background= "#00aa00" /> 
    <fragment 
     android:name="com.dmi.AnywhereArtist.PlayerFragment" 
     android:layout_width="fill_parent" 
     android:layout_height="30dp" 
     android:id="@+id/player_fragment" > 
    </fragment> 
</LinearLayout> 

答えて

0

私は一度

画面上に複数のアクティブな活動を持っている方法を理解するいくつかの問題を抱えています

あなたがこれをしてはならないからです。それは最初から悪いアプローチだったので、今は不要です。断片を使ってください。

私は一緒にトップフラグメントにアプリを分離FragmentActivity、FragmentActivityによって制御ミドルviewpager、下の断片を置くことができましたが、それは断片として最善のアプローチではないであろうように、これは思えますアクティビティー自体ではなく、ビュー・ページャーを新しいアクティビティーに置き換えると、FragmentActivity自体全体を置き換える必要があります。

あなたの説明したアプローチはうまくいくようです。あなたのメインエリアにはViewPagerの断片を使用してください。 Androidサポートパッケージを使用して、フラグメントサポートをAndroid 1.6に戻します。

+0

[OK]をクリックします。私は、私の最大の混乱がどこであるかは、アクティビティのようなライフサイクルを持つ独立したクラスを持っているので、フラグメントをどのように扱うことができるかということです。たとえば、メインエリアにViewPagerを使用している場合、完全に異なるコンテンツ(つまりテーブル)で置き換える方法と、メインビューのページャーダッシュボードとは別にそのコンテンツの処理を保持する方法メインのコンテンツエリアには、ダッシュボード以外のビューページャーのように機能したくないと思います。 –

+0

@ JamesR.Cahall:「ダッシュボードの場合を除いて、メインのコンテンツエリアにビューポケベルのように機能したいとは思わない」 - うーん、両方の方法をとることはできません。ユーザーはスワイプでダッシュボードを離れることはできますが、スワイプで戻ることはできず、 'ViewPager'を使用することはできません。ダッシュボードと 'ViewPager'は連携してほとんど意味をなさないが、Android開発者の使い方とは異なる方法で用語を使用している可能性がある。それにもかかわらず、メインのコンテンツ領域を 'FrameLayout'にし、' FragmentTransactions'を使用してそこに表示されているフラグメントを切り替えることは大歓迎です。 – CommonsWare

+0

したがって、私の主な領域がViewPagerではなくFrameLayoutであり、FragmentTransactionsを使用している場合、ViewPagerをフラグメント内に置くことはできますか?私が見たすべての例では、ViewPagerにアクティビティを拡張し、onCreateViewのフラグメントフォーマット(LayoutInflaterインフレータ、ViewGroupコンテナ、 バンドルsavedInstanceState)に対して作成しました。 –

2

フラグメントを使用します。

重要なことは、複数のアクティビティが画面に表示されている場合でも、Androidは一度に1つのアクティビティのみを実行できることです。

フラグメントは、モジュール化されたアプリケーションコンポーネントを取得して組み合わせることができますが、1つのアクティビティのすべてを保持しておくことで、この問題を回避できます。

あなたがしようとしているのは、Fragmentsがデザインしたものです。

は(。そして2.1 +サポートを得るために、サポートパッケージを使用します。http://developer.android.com/sdk/compatibility-library.htmlもののを、サポートパッケージはMapFragmentsをサポートしていないことに注意してください。)