2011-08-04 12 views
9

XMLレイアウトのビューのリソースIDは、すべてのレイアウトで一意である必要がありますか?AndroidリソースID

たとえば、私はレシピマネージャのアプリを少し作っています。私は新しい材料を追加するためのレイアウトファイルを持っています。このレイアウトでは、私は "edt_name"と呼ぶ成分のEditTextを持っています。しかし、私はこの名前があまりにも一般的であることを恐れています。例えば他のXMLレイアウトファイルのレシピ名、調理手順名などのEditTextもあります。

ただし、ラベルを必要以上に複雑にしたくない場合もあります。私は上記のEditTextを "edt_name_new_ingredient"と呼ぶのを避けたいと思います。

私は、開発者がどのようにリソースを一般的に整理するかについて興味があります。 Androidは、私が知る限り、リソースのサブディレクトリをサポートしていないので、名前付けスキームは本当に乱雑になる可能性があります。

答えて

6

リソースIDは、異なるxmlレイアウトで一意であってはなりません。特定のxmlファイルで一意である必要があります。

+0

私のJavaファイルでR.id.(view_id)にアクセスすると、すべてのビューからIDのリストを取得できますか?私は、同じ名前の2つの異なるXMLレイアウトファイルで2つのエディットボックスの名前を付けようとしました。エラーメッセージは表示されませんでしたが、R.id.(view_id)を使用すると、view_idが1つしかなく、IDがどのEditTextを参照しているのか分かりません。 –

+5

あなたは正しいですが、Androidでは、ビューIDのすべてから、アクティビティ内のsetContentViewメソッドを使用して設定したXMLレイアウトからビューIDを選択します。あなたがリストに載っているということです。だからこそあなたは何の誤りもありません。 2つのxmlでedittextのIDを変更してみてください...次に起こっていることのより良い画像を得ることができます –

+0

私はちょうどあなたが言ったことをテストし、あなたは正しい、success_anilです。 R.id.(view_id)はすべてのレイアウトのすべてのビューを表示しますが、現在使用しているレイアウトにビューが見つからない場合は、プログラムがクラッシュします。したがって、異なるレイアウトファイルにまたがって同じIDを持つ2つのビューがある場合は、現在のレイアウトファイル内のビューを自動的に使用します。 –

2

リソースIDはパッケージ内の名前空間です。リソース(XMLなど)にアクセスすると、パッケージ名は暗黙的に現在のものに設定されます。別のパッケージに他のリソースファイルを置いて、コードやXML内のリソースファイルを参照することができます(これは、SDKに付属のプラットフォームリソースにアクセスする方法です)。

同様に、異なるパッケージのRクラスにアクセスしてそのリソースを使用できますが、同じパッケージ内のすべてのパッケージには一意の名前が必要です。

詳細については、hereのドキュメントを参照してください。

+0

リンクをありがとう。私は単一のプロジェクトとしてアプリケーションを構築しているので、私は1つの "R"クラスしか持っていません。私は、すべての私のレイアウトファイルのすべての私の意見は、一意のIDを持っている必要があることを推測する? –

関連する問題