Программный доступ к IntelliJ UI Designer созданным объектам?

Я создал TextView в конструкторе пользовательского интерфейса, но я не могу понять, как мне получить к нему доступ из кода. Я попытался перейти к объявлению, но это просто приводит меня к XML-файлу, где TextView "сделан". Кто-нибудь знает как это сделать? Помощь очень ценится!

2 ответа

Это не зависит от IDE. Сначала вам нужно "найти" TextView, затем вы можете изменить его свойства:

TextView myTextView = (TextView) findViewById(R.id.yourid); // The ID is declared in the XML file as android:id atrribute.
myTextView.setText("New Text");

Что вы подразумеваете под "доступ к нему из кода"? Если вы говорите о переходе от того места, на которое он ссылается в коде, к просмотру в конструкторе пользовательского интерфейса, более новые версии Intellij с поддержкой Android включали вкладки в нижней части редактора при редактировании файлов XML, чтобы позволить вам переключаться между текстовое представление и визуальное представление файлов макета.

Если вы говорите о том, как создать экземпляр представления в коде, опубликуйте несколько примеров того, что вы пытались (самый распространенный способ - использовать LayoutInflater).

Редактировать:

Изменение фактического текста, отображаемого в TextView, не является проблемой, связанной с IDE. У вас есть два способа сделать это (хорошо, три, если вы считаете визуальные и текстовые представления файла XML как отдельные методы). Вы можете установить текст в файле XML, установив android:text атрибут в виджете TextView или в коде путем вызова setText(), Какой бы способ вы не решили сделать, вы должны рассмотреть не ссылку на ваш текст как на необработанную строку, а как на строковый ресурс, как описано здесь.

Изменить 2:

Хорошо, вы ищете инструкции о том, как в первую очередь раздувать вид, чтобы получить к нему доступ. Это то, что я ответил изначально, но вот немного больше кода. В вашей активности (у вас есть настроенная активность, верно?):

LayoutInflater inflater = (LayoutInflater)getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = inflater.inflate(R.layout.<your layout ID>, null);
RelativeLayout item = (RelativeLayout) view.findViewById(R.id.<your TextView's id>);
Другие вопросы по тегам