4

公式 Fragment guideDesign Philosophyセクションには、次のように書かれています。

各フラグメントは、モジュール式で再利用可能なアクティビティ コンポーネントとして設計する必要があります。つまり、各フラグメントは独自のライフサイクル コールバックを使用して独自のレイアウトと独自の動作を定義するため、1 つのフラグメントを複数のアクティビティに含めることができるため、再利用できるように設計し、あるフラグメントを別のフラグメントから直接操作しないようにする必要があります。

しかし、そのExampleでは、TitlesFragmentクラス (extends ) は、そのメソッドでクラス ( extends ListFragment) を直接参照しています。DetailsFragmentFragmentshowDetails()findFragmentById()

DetailsFragment details = (DetailsFragment)
        getFragmentManager().findFragmentById(R.id.details);

DetailsFragmentクラスのnewInstance()メソッドを呼び出します。

details = DetailsFragment.newInstance(index);

コーディング スタイルが悪いのでしょうか。

比較すると、コーディング スタイルに関しては、基本的なトレーニング マテリアルの方が優れているように見えます。フラグメントからアクティビティへの通信にインターフェイスを使用します。

4

1 に答える 1

4

それは悪いコーディングスタイルですか?

私見、はい。IMHO、フラグメントは、アクティビティによって管理される他のフラグメントを認識したり、気にしたりしてはなりません。フラグメントはネストされたフラグメント(からの子フラグメントgetChildFragmentManager())を考慮しますが、ピアフラグメントは考慮しません。

引用された例の場合、TitlesFragmentシングルペインモードとデュアルペインモードのどちらで表示されているかを気にする必要はありません。活動はそれを気にする必要があります。これにより、アクティビティ内の画面サイズに依存するすべてのコードが分離TitlesFragmentされます。画面サイズに気付かない場合があります。

そうは言っても、コードAFAIKには技術的に問題はありません。それは、私が推奨する方法ではありません。

于 2013-03-20T23:50:53.397 に答える