2017-03-31 5 views
0

スマートフォンとタブレットのレイアウトに使用するフラグメントであるxmlのインクルードタグについて読んできましたが、私の問題を解決するよりも混乱しています。Androidコードとレイアウトを再利用するためのベストプラクティス

マイアプリには4つの画面があります。

1 - あなたがログインし、それがJSON

2,3,4から情報をダウンロードする - あなたがジャンプする2枚の画像のいずれかをクリックすることができ、ログイン、活動2負荷(カスタムアダプタ付きリスト)から、第3および第4の活動。

1と2が既存のものと同じレイアウトを持ち、3が異なるレイアウトを持つ、異なるJSONが解析された状態でアクティビティ1、2、3を再度作成する必要があります。

私がそれらに働くために必要なコードは、既に(AsyncTaskを使ったダウンロードタスク、ボタンクリックリスナーなど)です。

私は、基本的に同じgetViewメソッドをコピーして、新しいクラスに貼り付けることはできません。たとえば、第2の範囲の画面ではボタンは機能しません。

私はコードをコピーアンドペーストして手動で変更するのではなく、どのようなアプローチを取るべきですか?

初心者の質問に申し訳ありません。

必要に応じてコードを提供できます。

PS 1:唯一のタブレットのような異なる画面の断片ですか、私はそれで何かを作ることができます:私はすでにとテストがXMLに含まれ、コードをコピーしてそれdoesntのは、プロの

PS 2を見てやってきましたか?

答えて

1

ので、ここでいくつかの未尋ねた質問に含むいくつかの答えは、だ、いくつかの質問です:

  • 可能な限りは、などあなたの活動、フラグメント、からできるだけ多くのコードを削除するために努力Androidのライフサイクルや実際に画面に何かを置くこと(JSONの解析など)がない場合は、それを「普通の古いJava」クラスに入れます。また、この方法で、アクティビティ間で機能を共有することができます。

  • IMHOでは、何らかの理由でAsyncTaskを使用しないでください。それらはアクティビティーまたはフラグメントとともに使用されますが、フラグメントまたはアクティビティーのライフサイクルを尊重するものではないため、診断が困難なクラッシュの原因となることがよくあります。ローダーのようなライフサイクルに同期したものを使用してください。または、Activity/Fragmentライフサイクルの適切な時点でサブスクライバをキャンセルできるRxJavaルートに移動します。

  • フラグメントはコードの再利用に適していますが、アクティビティとは若干ライフサイクルが異なるため、扱いにくい可能性があるため、慎重に使用してください。 UIの一部を再利用するだけであれば(動作ではなく)、レイアウト「インクルード」がおそらく良いでしょう。振る舞いについては、カスタムViewクラスをFragmentの良い代替手段とすることができます。

  • HTTPUrlConnectionなどのプリミティブを使用して、HTTP/RESTアクセスを自分で実行しないでください。あなたを困らせてしまうコーナーケースがたくさんあります。この目的のために構築された数多くの優れたオープンソースライブラリを使用してください。私はレトロフィットを強くお勧めします。

+0

これはあいまいな答えではないと思われるかもしれませんが、私の友人です。あなたは、簡単な言葉で、私が思いついた多くの問題を解決しました。あなたの経験豊富なアドバイスで、私はすでにコード化するより良い方法を考えることができます(例えば、HHTPUrlConnectionとAsyncTasksをもう使用しないでください)。私はそれを感謝します、ありがとう。いい日を過ごすxD – BlitzkriegBlue

関連する問題