Не удается найти идентификатор XML при накачивании вида - PullRequest
0 голосов
/ 15 февраля 2011

Я пытаюсь раздуть пользовательский alerttdialog и столкнулся с чем-то странным.

layout = inflater.inflate(R.layout.call_or_sms_dialog,(ViewGroup)findViewById(R.id.contacts));

Метод inflate () принимает 2 аргумента: ресурс, который нужно накачать, и необязательное представление, которое является родителем длясгенерированный диалог.Моя проблема связана с дополнительной частью представления.

Я не могу найти идентификатор корневого представления в findViewById (R.id.contacts).«контакты» представляет собой XML-файл, который содержит элементы управления для этого конкретного действия.Я смог сослаться на какой-то другой xml-файл с другими действиями, но просто не мог сослаться на этот файл contacts.xml.

Я пытался сделать "чистую" сборку на Eclipse и восстановить R.java, но все жене помогает.Есть ли способ вместо этого вручную сгенерировать идентификатор "contacts.xml"?

Ответы [ 3 ]

3 голосов
/ 15 февраля 2011

"контакты" - это XML-файл, содержащий элементы управления для этого конкретного действия

Если это XML, вы не можете получить к нему доступ с помощью R.id;но что-то вроде R.xml или R.layout.Конечно, если вы используете findViewById, вы должны передать действительный идентификатор (что-то, на что ссылается R.id).Итак ... что вам нужно сделать, это дать идентификатор представлению, на которое вы хотите сослаться;например:

<ViewGroup
   android:id="@+id/contacts"
   blah

Также имейте в виду, что, если вы используете метод findViewById напрямую, идентификатор должен быть частью текущего макета (я имею в виду макет, установленный в setContentView),Если идентификатор не принадлежит текущему макету, вам нужно выполнить что-то вроде referenceToTheViewContainingTheIDResource.findViewById().

2 голосов
/ 25 июня 2011
Please try this code:

LayoutInflater inflater = LayoutInflater.from(this);
AlertDialog alertDialog = new AlertDialog.Builder(this).create();
    alertDialog.setTitle("SET YOUR TITLE");

View view = inflater.inflate(R.layout.call_or_sms_dialog, null);
v  = (ViewGroup)findViewById(R.id.contacts);
alertDialog.setView(view);
0 голосов
/ 15 февраля 2011

Второй аргумент - это существующее представление, а не корневое представление раздуваемого макета.Это проблема?Вы всегда можете просто передать null в качестве второго аргумента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...