2016-05-10 3 views
-5

Этот вопрос довольно простой. Позвольте мне привести пример. У меня есть два вида деятельностиСоздание id для Android Просмотров

  • activity_a.xml

  • ActivityA.java

  • activity_b.xml

  • ActivityB.java

Оба файла XML содержат только TextView для отображения простого текста. Как обычно, TextViews будут ссылаться в соответствующих файлах .java, используя их идентификатор вида

Мой вопрос в том, правильно ли ссылаться на TextView в обоих файлах XML с одинаковым идентификатором? (Например, используя приведенный ниже код с точно таким же идентификатором для activity_a.xml и activity_b.xml)

<LinearLayout 
android:layout_width="match_parent" 
android:layout_height="wrap_content"> 
    <TextView 
    android:id="@+id/textview" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" /> 
</LinearLayout> 

Я практиковал эту процедуру без каких-либо проблем. При попытке достичь соответствующего кода XML для TextView с помощью Ctrl + Click (на Windows), я с двумя вариантами (для отображения XML-кода в TextView от activity_a.xml или activity_b.xml).

Также, как можно назвать название в Android? Это будет полезно, когда ваш проект Android содержит несколько файлов макета.

+0

Спасибо всем. Вы очистили мое сомнение – Traveller

+0

, но, зачем мне предлагать -ve рейтинги ?. Я имею в виду, что не так с моим вопросом? – Traveller

ответ

0

Если имеется право ссылаться на TextView в обоих файлах XML с одинаковым идентификатором?

Совершенно верно, компилятор будет рассматривать только идентификатор под одной иерархией.

например: findViewById(R.id.textview) внутри ActivityA.java будет искать только TextView ID внутри activity_a.xml (если у вас есть setContentView(R.layout.activity_a); заранее

что рекомендуемый способ назвать представления в Android

В моих.? вы должны просто согласовать свое мнение по всему приложению. Основная цель - избежать неправильной интерпретации и путаницы.

Надеюсь, это поможет!

0

Они находятся в разных видах деятельности, поэтому у вас не должно возникнуть проблемы с использованием одного и того же идентификатора. вы можете объявить их как @+id/textview. Однако почему бы просто не использовать один и тот же файл XML для обоих видов деятельности? Нет причин, по которым вы не можете. Вы также можете создать файл ids.xml под папкой значений и объявить все свои идентификаторы под ним, поэтому вам не нужно объявлять их в своих макетах, но это не очень распространенный подход.

1

Да, если у вас одинаковое имя вида или группы просмотра в другом макете, то он сообщает, с какого файла макета он принадлежит, попросите выбрать требуемый файл макета.

так для этого вы должны следовать соответствующим соглашениям об именовании, чтобы избежать такого рода путаницы

https://github.com/ribot/android-guidelines/blob/master/project_and_code_guidelines.md

или вы можете дать имя как activity_home_tvUserName если имя пользователя TextView от домашней деятельности и activity_profile_tvUserName если имя пользователя TextView из профиля.

0

Если имеется право ссылаться на TextView в обоих файлах XML с одинаковым идентификатором?

Мой ответ Да, это правильно.

Всякий раз, когда мы устанавливаем setContentView(R.layout.activity_a), он будет искать данный идентификатор в вышеуказанной деятельности. Локальный атрибут, имеющий один и тот же идентификатор, будет более предпочтительным по сравнению с другими атрибутами с одним и тем же идентификатором.

Но наличие уникальных идентификаторов - лучшая практика.

Смежные вопросы