0

最初の Android アプリケーションを作成するチュートリアルを進めているときに、接頭辞がファイルで@+id/定義されているリソースを参照するだけでなく、その記号がそのリソースとの最初の遭遇を示しているため、それを作成することを示すセクションにたどり着きました。次のコード スニペットを検討してください。gen/R.java+

<EditText android:id="@+id/edit_message"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="@string/edit_message" />

リソースに関連する最初のリンクのサイドバーと、そこにリンクされている「リソースの提供」という名前の記事を(やや大ざっぱなレベルで) 読んだ後、ドキュメントから、@+id/プレフィックスを持つリソース。各プレフィックス内に同じ名前のリソースをスコープできることを理解しています。

注:この文字列リソースは、要素 ID と同じ名前の edit_message を持っています。ただし、リソースへの参照は常にリソース タイプ (id や string など) によってスコープが設定されるため、同じ名前を使用しても衝突は発生しません。

しかし、私が運転しているのはこれです。ドキュメントに基づいて、競合が発生するため、2 つの異なるアクティビティのように 2つのコントロールをリソース化することはできないようです。edit_message

ここでの私の懸念は、コードからこれらのコントロールにアクセスできるように、属性を一意に保つためにid属性の前に名前を付ける必要があると思われることです。Activity

ここでの私の発言と仮定は正しいですか?

4

1 に答える 1

3

XML の正確なブロックを別のレイアウト ファイルに配置すると、問題なく動作します。@+id は、まだ定義されていない場合、新しい ID を生成します。アプリがパッケージ化されると、パッケージ化ツールが ID を 1 回作成すると、他のすべてのツールがその ID を正しく参照します。

同じレイアウトに同じ ID を持つ 2 つの UI コンポーネントが存在しない限り、すべて問題ありません。

于 2013-07-31T17:50:35.680 に答える