10

Fragments の採用がますます進んでいるだけでなく、Fragments の機能が増加するにつれて (Fragments in Fragments、MapFragments)、いつ新しいビュー/アクションを Fragment として作成する必要があるかを定義する必要があるポイントに到達し始めています。またはアクティビティとして?

アクティビティは次のように定義されます。

アクティビティは、ユーザーが実行できる単一の焦点を絞ったものです。

しかし、フラグメントは、ドキュメントで説明されているように、代わりにその定義を採用しています。

たとえば、ニュース アプリケーションでは、1 つのフラグメントを使用して左側に記事のリストを表示し、別のフラグメントを使用して右側に記事を表示できます。両方のフラグメントが 1 つのアクティビティに表示されます。

これは、ユーザーが 2 つのフラグメントを使用して 1 つのアクティビティで実行できる 2 つのことです。

新しいアクション/ビューをフラグメントまたはアクティビティとして作成する必要があるかどうかを判断するための最良のアプローチは何かを理解するための入力/ヘルプが必要ですか?

4

3 に答える 3

14

答えは、あなたとあなたの開発慣行 (またはあなたの会社の慣行) によって異なります。ただし、私の意見は次のとおりです。少なくとも、開発中の機能が複数のアクティビティ内で使用できると思われる場合、または別のビュー (タブレットのように) と一緒にアクティビティで使用できる場合は、それを作成する必要があります。フラグメント。

私たちは最近、すべての場合にフラグメントを作成するという哲学を採用しました。私たちのアクティビティは現在、単なるトップレベルのコーディネーターであり、基本的に物事をまとめる接着剤です。これにより、一貫性のある柔軟なアーキテクチャが実現します。コードに取り組んでいるいくつかの場所に多数のエンジニアがいるため、これは私たちにとって重要です。

于 2012-12-13T18:20:50.287 に答える
6

アクティビティは次のように定義されます:「アクティビティは、ユーザーが実行できる単一の焦点を絞ったものです」

それは何よりも時代遅れの文書の問題です。Activity同じ定義があります...画面サイズが小さい場合(電話など)。より大きな画面に移動すると、アクティビティが「単一の焦点を絞ったもの」よりも複雑になる可能性が高くなります。

それで、フラグメントまたはアクティビティとして新しいアクション/ビューを作成する必要があるかどうかを判断するための最良のアプローチを理解するために、いくつかの入力/ヘルプが必要ですか?

これが私の一般的なヒューリスティックです:

  • そのようなUIが電話サイズの画面にスタンドアロンで存在する可能性があるが、タブレットサイズの画面で他のものと組み合わせて使用​​されることが予想される場合は、それをフラグメントにします。

  • そのようなUIが常にスタンドアロンで存在することが予想される場合は、単純なアクティビティを作成するだけです。

  • 予測する能力がそれほど良くないと予想する場合は、フラグメントを増やす側で誤りを犯してください。たとえば、「まあ、助けは他のものと一緒である必要は決してないだろう」と言って、それを活動にするかもしれません。次に、他のUIが、それ自体でオフにするのではなく、それらと並べて使用することでメリットが得られる可能性があることに気付いた場合、ユーザーはドキュメントを読み、同時にアクションを実行できます。いくつかのやり直しが必要になるため、ヘルプを断片化していないことを後悔しています。

  • そのようなUIがスタンドアロンで存在することは決してない場合、つまり、完全なアクティビティというよりも単一のウィジェットのようなものであり、複数のプロジェクトで使用することが予想される場合は、単一のウィジェットにします。カスタムViewまたはの形式ViewGroup

しかし、jsmithが示すように、普遍的な正解も不正解もありません。ところで、AFAIAC、jsmithの答えはここでは正しいものですが、私は彼の答えについてコメントするにはあまりにも言葉になりすぎていました... :-)

于 2012-12-19T14:16:20.107 に答える
1

私は1.5からAndroidで開発しているので、かなりの時間のアクティビティと最近のフラグメントから開発しています。

非常に頻繁に断片が私の口の中に酸っぱい味を残しました...例は私がボタンを備えた一種のページ付けされたダッシュボードを必要としたときでした。そのために、ViewPager+ボタンごとに1つのフラグメントを使用しました。以前はAndroid4.2のフラグメントをネストできなかったため、あらゆる種類の問題が発生しました。

もう1つの問題は、フラグメントの非同期モードの機能であり、ある場所から別の場所に非常に迅速に移動する必要がある場合、あらゆる種類の誤動作が発生していました。

すべてが悪かったとは思わないでください...もっと単純なケースでは、フラグメントの使用は非常にうまく機能しました。

したがって、私の意見では、自己完結型で、ビュー上で頻繁に移動されず、複数の画面で再利用でき、タブレット(または将来的には私の)をサポートする領域がある場合は、それを使用してください。

ネストされたフラグメント、頻繁に再配置されるビュー、または再利用されないコードが必要な場合は、必要ありません。

于 2012-12-19T13:32:32.480 に答える