2

stackoverlow に関する同様の質問はほとんどありませんが、より複雑な/複数のアクティビティ アプリにアクション バー パターンを実装する方法についての明確な説明は見つかりませんでした。

私が理解しているように、これを行うには2つのオプションがあります。

1.)複数のアクティビティを実装し、それぞれにアクションバーを実装/含める->これの問題は、新しいアクティビティを起動するたびに、同じように見えるアクションバーがあっても、その遷移があり、画面をジャンプすることです、つまり、新しい「ウィンドウ」、新しい別の画面であることは明らかであり、単一のアプリ ナビゲーション フレームの感覚を殺します。

2.) 単一の FragmentActivity を使用し、その中にアクション バーを配置し、コンテンツ フレームを拡張する複数のフラグメントを使用します。--> これはアクション バー パターンの非常に優れた実装ですが、問題は、電話の場合は 1 つのアクティビティに 1 つのフラグメントを含める必要があるという Google の推奨事項に反することです。それともそうではありませんか?「ルック アンド フィール」から、Gmail アプリはほとんどこの方法で行われていると言えます。

3.) TabActivity - 非推奨です。

2 番目の解決策 (単一のアクティビティ、複数のフラグメント) については、将来パフォーマンスの問題が発生するかどうか心配です。その場合、アンドロイドはどのようにメモリを処理しますか? アクティビティの場合と同じように、非アクティブなフラグメントを削除してスペースを解放しますか? それとも、アプリ全体を強制終了するか、ユーザーの電話が過負荷になりますか?

多分私はそこに何かが欠けているかもしれませんが、Androidナビゲーションパターンの実装とフラグメントの使用法が非常に混乱していることがわかりました:/

電話で複数のフラグメントを使用して 1 つのアクティビティを実行しない理由はありますか? (約 5 ~ 6 個のフラグメントがあり、そのうちのいくつかにはネストされたフラグメントがあります)

4

1 に答える 1

1

まず、この質問この回答が役に立つと思うかもしれません。

あなたはアクションバーについて話していますが、実際の問題は、複数のフラグメントまたは複数のアクティビティを持つ1つのアクティビティのパターンに関するものです。前のリンクが述べているように、「過度に単純化されたチュートリアル」では、電話の状況でアイテムのコンテンツを表示する別のアクティビティを開始することが提案されていますが、これによりロジックまたはコードが重複する可能性があります。

最後に、「複数のフラグメントを持つ FragmentActivity」を使用することをお勧めします。これは Google の推奨事項に反しているため、Stephen Asherson氏は次のように述べています。彼ら"。

PS。参考までに、フラグメントの切り替えでアクティビティのアクションバーを変更する場合、「戻る」キーが押されてバックスタックが変更されたときにUIの変更を正しく処理するために何かをしたい場合があります。通常、onbackstackchanged() 関数をオーバーライドして UI を処理します。

于 2013-09-16T05:11:53.217 に答える