Как использовать собственные идентификаторы Android в качестве идентификаторов для визуальных компонентов NativeScript
Во-первых, хотя вы можете использовать собственные идентификаторы Android в качестве идентификаторов NS, собственный Android не сделает с этим ничего полезного. В частности, ваше представление NS с собственным идентификатором Android не будет найдено, если вы используете View.findViewById()
Android.
В исходном коде NativeScript, файл, в котором определены идентификаторы представления NativeScript (view-base.ts) , не может быть найдено никакой ссылки на родной Android, что означает, что идентификаторы представления NativeScript и идентификаторы Android фактически не связаны или взаимодействуют. Более того, я искал идентификаторы представления Android с помощью собственного инструмента Android под названием Stetho и обнаружил, что представления NativeScript вообще не имеют идентификаторов, даже если файлы XML NativeScript действительно определяют идентификаторы представления.
Чтобы ответить на ваш вопрос, есть способ предоставить собственный идентификатор Android для NativeScript с помощью моделей представления.
Предположим, вы хотите использовать Android «@ + id / nameTextbox» в XML. В Java это будет преобразовано в R.id.nameTextBox, поэтому в XML NativeScript вы пишете:
<TextField id="{{R.id.nameTextbox}}"/>
Использование фигурных скобок означает, что вам нужно получить R.id.nameTextbox
из модели представления, поэтому в функцию создания модели представления вы добавляете:
viewModel.R = <your.application.id>.R
- это applicationId вашего приложения для Android, которое вы можете найти на app/App_Resources/Android/app.gradle
.
Эта строка делает ваш класс R видимым для ваших XML-представлений, поэтому вы можете использовать значения в R.id не только как идентификаторы, но и как text
для ваших текстовых полей и меток. Если вы это сделаете, вы увидите, что идентификаторы Android - это действительно длинные целые числа, а не строки.
Также следует иметь в виду, что R на Android - это класс, который собирает все идентификаторы ресурсов в библиотеке или приложении и генерируется во время сборки. Поэтому, если вы хотите присвоить вашему представлению идентификатор R.id.totallyNewId
, которого сейчас нет в вашем Android-проекте, вам придется создать его на Android, что не очень удобно (вот как)
Итак, в заключение, использование R.id на NativeScript может быть выполнено, но нет никаких причин, по которым вы когда-либо захотели бы это сделать.
person
Leo supports Monica Cellio
schedule
18.04.2018