2012-07-20 16 views
13

誰かがこの問題で以前に盗聴されたかどうかはわかりませんが、それは私の大きな苦痛です。AndroidでXML要素のIDの名前を付けるベストプラクティスは何ですか?

アンドロイドのXML要素にIDを与える方法はありますか?

ここでは、パターン[アクティビティ/フラグメント名] [要素タイプ] [特定の名前]のIDを設定します。たとえば、LoginActivityで使用されている電子メールを保存するためのEditTextがある場合は、「LoginEditTextEmail」というIDを与えます。

私が直面してる問題は、このアプローチでは、idは、多くの場合、非常に長いもので終わる、です。

どのようにIDを設定しますか?ベストプラクティスは何ですか?

答えて

5

あなたは事を複雑にしています。どのような方法でもあなたの記憶に残る名前を付けてください。 IDはXMLごとに一意である必要があります(IDがmy_edittextの異なる50のレイアウトを持つことができます)。そのビューはIDが1つのビュー階層のみであるためです。

+0

ああ、わかりました。 @kcoppockに感謝します。idが単一のビュー階層内でのみユニークである必要がある場合、他のチャンクを残しておくことは明らかです。 ; D –

+0

@kcoppock、それは兄弟の断片、または入れ子の断片の問題になるのでしょうか? – bcorso

+0

アクティビティからフラグメントビューを探しているかもしれませんが、フラグメント内ですべてのビュー操作を行っている場合(通常はそうする必要があります)、問題はありません。 – kcoppock

1

何かを命名するのと同じように、私はそれを正確に記述する可能な限り短い名前を使用する傾向があります。レイアウト用のIDの場合は、各IDがレイアウト内で一意であることを確認してください(別のレイアウトで同じIDを再利用できます)。

12

記述名は理想的です(プログラミング言語の変数の名前と同じです)。

私はすでに私はあなたのIDのサイズを小さくするには、これらの潜在的な方法を提供します良いシステムを持っていると思う

[アクティビティ/フラグメント名] - 個人的に私は、私は1つのレイアウトを使用する傾向があり、これをドロップします何らかのアクティビティーごとのファイル/フラグメントがあるので、ビューの意味を混乱させることはありません。また、いくつかのビューウィジェットを複数のアクティビティーで再利用し、それらを同じIDのままにして、見つけて、それらを相互に作用簡略化されている(すなわち、それはコピー/ペーストまたはアクティビティのサブクラスに入れることができます)

[要素タイプ] -私はウィジェットタイプのための3文字の省略形を使用します。

  • 香水EDT =のEditTextを
  • txtが=のTextView
  • BTN =ボタン
  • Prgのラベリング何かのために静的である
  • LBL =のTextView =プログレスバー
  • LYT =レイアウト
  • 等...

[特定の名前] - ここで作られている本当の改善、それは限り、それはそれが何のためにあるのかを説明しなければならないようにする必要があります。

+1

@Timに感謝します。もし私がアクティビティ/フラグメント名を残すことができれば、それが最適です。基本的には、id-lookup手続きを十分に理解していないために追加しました。 –

+1

あなたは確かにそれを残すことができます)、私は個人的にそれを使用しない傾向があります。 – FoamyGuy

0

ドロップフラグメント、活動および種類は、あなたがそう、コーディングにこれらを修飾しない限り:

boolean isLoggedIn = false;

android:id="@+id/is_logged_in"

XML修飾子を提供し、他の回答で述べたように、今、あなたはどうかを決定する必要があります一貫性および/またはさらなる資格が必要であればそれに合致する。あなたは本当に資格を取得する必要がありますし、あなたや他の誰かによってコードがもっと難しくなることをサポートしていないのであれば?

だから約strings.xml

の前にidにfragまたはactivity修飾子を付けます。したがって、たとえば:

<string name="profile_is_logged_in_true">Logged in.</string>

<string name="profile_is_logged_in_false">Not logged in.%</string>

また

&hellip;

<string name="profile_isloggedin_false">Not logged in.</string>

しかし、まだ納得していない:

<plurals name="plural_is_logged_in_duration">...

私は はとをおもちゃにしました。これは実際には分類問題であり、今ではタグ付けによって他の分野で解決されています。 Javaは点線の名前空間を提供して修飾子を入力し、あなたはJavaのプラスのAndroidからのいくつかの追加の名前空間を持っているのでそう

com.example.android.app.profile.State.isLoggedIn

アンドロイドはR.string :-)のようなものを使用しています。あなたはので、おそらく、複数の文字列リソースファイルを持つことができます忘れないでください:

res/values/widget_defaults.xml

TextViewを言うためにいくつかのデフォルト値を含めることができます。 trueとfalseの文字列は複数形で処理する必要がありますが、この例はうまくいけば助けてくれます。

関連する問題