6

要件

私は、 AとBの2つのアクティビティを備えたアプリケーションを持っており、A->Band B->A(バックプレス)のようなナビゲーションを備えています。私の要件は

  • 現在表示されているアクティビティに関係なく、ビュー/レイアウトを画面に表示したい。アプリの起動時(アクティビティAのonCreate)にこのビューを膨らませると、A-> Bからの移行中、およびBが画面に表示されている間、画面上で静的なままになります。
  • したがって、当然、このビューは1回だけ膨らませる必要があります(アプリの起動時に、onCreate of A)。

私が見つけたもの

私はいくつかの検索をしました、そして私が見つけたものから、アンドロイドでレイアウトを再利用する2つの方法があります

  • を使用して <include>

    これは、一般的に使用されるUI要素のxmlコードを記述するためのツールのように思えます。親レイアウトで使用されるたびに膨らみます。

  • を使用して ViewStub

    ViewStubの使用について調査しましたが、多くのレイアウトでコードセグメントを再利用する方法のようです。また、レイアウトで使用するたびに膨らませる必要があります。ただし、実行時に表示した場合にのみ膨らむ必要があります。

私の要件のもう1つのヒント

iPhoneの開発に精通している人は、ビューをに追加できます。ビューは、現在アクティブUIWindowであるかどうかに関係なく、そこにとどまります。UIViewControllerアプリケーションで正確な動作が必要です。

私の元のセットアップ

私はAndroid2.1以降をターゲットにしています。FragmentAPIレベル11(android 3.0)以降から利用できるようです。1つのオプションは、古いバージョンでの使用を可能にするAndroid互換性ライブラリを使用することです。Fragment私は現在それについて研究しています。しかし、プロジェクト全体を変更してフラグメントを使用するのではなく、要件を満たすために利用できる他の方法があるかどうかも知りたいです。

私のアプリケーションには約30の奇妙なアクティビティがあり、このレイアウトをそれらすべてにフローティングさせたいと思います。質問をシンプルかつ簡単にするために、2つのアクティビティを含むテストケースを作成しました。

4

1 に答える 1

2

解決策1:FrameLayout

使いたいのはFrameLayout。FrameLayoutは、単一のアイテムを表示するために画面上の領域をブロックするように設計されています。子ビューはスタックに描画され、最後に追加された子が一番上に表示されます。

http://developer.android.com/reference/android/widget/FrameLayout.html

次に、アクティビティで使用できるバックスタックについてここを読んで、戻るボタンを使用してアクティビティ間を行ったり来たりします。

http://developer.android.com/guide/topics/fundamentals/tasks-and-back-stack.html

解決策2:フラグメントトランザクション

2つの別々のアクティビティをコーディングするのではなく、2つのフラグメントを使用して1つのアクティビティをコーディングします。フラグメントのドキュメントからの宣伝文は次のとおりです。

「フラグメントは常にアクティビティに埋め込まれている必要があり、フラグメントのライフサイクルはホストアクティビティのライフサイクルに直接影響されます。たとえば、アクティビティが一時停止されると、その中のすべてのフラグメントも同様に、アクティビティが破棄されると、すべてのフラグメントも同様に影響を受けます。ただし、アクティビティの実行中(ライフサイクルが再開された状態)は、各フラグメントを個別に操作(追加または削除など)できます。このようなフラグメントトランザクションを実行する場合は、そのフラグメントトランザクションをバックスタックに追加することもできます。アクティビティによって管理されます。アクティビティ内の各バックスタックエントリは、発生したフラグメントトランザクションの記録です。バックスタックを使用すると、ユーザーは[戻る]ボタンを押すことでフラグメントトランザクションを元に戻すことができます(逆方向に移動できます)。

于 2012-06-15T06:48:44.647 に答える