Программный доступ к 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>);