Вместо префикса id в xml, можно ли указать конкретный макет кода? Например, если у меня есть 3 макета, каждый из которых имеет кнопку с идентификатором «btn». Можно ли указать, какой макет для findViewById (R.id.btn)?findViewById в определенном макете?
ответ
Основной контекст определяется с помощью setContentView(R.lyaout.my_layout)
. Если вы раздуваете другой макет, используя LayoutInflater.inflate()
, вы получаете объект макета, позвоните ему buttonLayout
. Теперь вы можете отличаться от this.findViewById(R.id.button)
и buttonLayout.findViewById(R.id.button)
, и обе они дадут вам разные ссылки на кнопки.
findViewById
- это метод класса View
. Вы можете указать, где вид следует искать как тот
final View container = new View(context);
container.findViewById(R.id.btn);
это также метод класса 'Activity' – WarrenFaith
Если ваш контентный вид представляет собой сложную иерархию, которая имеет несколько видов с идентификатором btn
, вам нужно будет перейти к поддереву иерархии и выполнить поиск там. Предположим, у вас есть три вида LinearLayout
, каждый из которых имеет вид btn
. Если вы можете сначала выбрать правильный LinearLayout
(по идентификатору, тегу, позиции или некоторым другим средствам), вы можете найти правильный вид btn
. Если соответствующий LinearLayout
имеет идентификатор branch1
, например:
View parent = findViewById(R.id.branch1); // Activity method
View btn = parent.findViewById(R.id.btn); // View method
, если у вас есть внутри различных кнопок BTN Viewgroups, это возможно, но требует, чтобы дать ViewGroups другое имя! Easyiest будет для этой цели, чтобы определить расположение Баттона внутри своего собственного XML (т.е. button_layout.xml) внутри вашей деятельности вы можете сделать это:
public MyActivity extends Activity{
Button btn1, btn2, btn3;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
LinearLayout ll = new LinearLayout(this);
setContentView(ll);
btn1 = (Button)inflater.inflate(R.layout.button_layout, ll);
btn2 = (Button)inflater.inflate(R.layout.button_layout, ll);
btn3 = (Button)inflater.inflate(R.layout.button_layout, ll);
}
}
- 1. findViewById() не найден id в вложенном макете?
- 2. Отображение ImageView в определенном месте на макете
- 3. findViewById() возвращает неспособный найти символ, но идентификатор определен в макете?
- 4. Использование модели просмотра в частичном представлении, определенном в макете
- 5. Есть ли способ отключить все элементы в определенном макете программно?
- 6. Как выполнить вывод на консоль в определенном макете?
- 7. использования ngFor для отображения таблицы в определенном макете
- 8. findViewbyID с диалогами
- 9. Использование setOnClickListener в макете
- 10. Android findViewById() в пользовательском представлении
- 11. Виды переходов в макете
- 12. отверстия в макете/изотопном макете
- 13. android findViewById возвращает null в onoptionsitemselected
- 14. Использование findViewById во внешнем классе
- 15. FindViewById в MvxFragment
- 16. FindViewById в студии android
- 17. Передача переменной в findViewByID
- 18. Странная ClassCastException в findViewById
- 19. findViewById() в AsyncTask
- 20. Ошибка в findViewById()
- 21. Ошибка JSONPARSING в findViewById
- 22. findViewById использование в представлении
- 23. findViewById в DialogFragment - NullPointerException
- 24. Android findViewById в DialogFragment
- 25. findViewById в java (R.id.bAdd)
- 26. Панель инструментов - findViewbyID возвращает null
- 27. Эффективность findViewById
- 28. FindViewById Loop
- 29. findViewById() question
- 30. findViewById() в функции OnActivityResult вызывает сбой
он будет искать этот идентификатор в том, который вы накачанные через inflate или setcontentView – Raykud