У меня та же проблема, и я пытаюсь решить ее слишком много дней ...
Один трюк, который вы можете сделать, это Исключить из импорта и завершения <package-name>.R.id.*
для области проекта.
Перейдите к Settings/Editor/Auto Import
, чтобы добавить его.
Это улучшает нашу проблему, и если вы сделаете это и очистите проект, он будет работать, но не решит проблему полностью. Много раз импорт снова появляется как неиспользованный импорт , и необходимо очищать проект снова и снова: - (.
EDITED
Кроме того, еще одно улучшение, которое я достиг, - работа с include
s на XML. Например, если я собираюсь использовать «одну и ту же» кнопку на нескольких экранах, я создаю определенный макет для этой кнопки и повторно использую ее для нескольких действий / фрагментов. Вы можете установить идентификатор в этом конкретном макете, и синтетический будет автоматически импортировать его без возникновения конфликтов, так как у вас есть ссылка на представление содержимого, объявленная ранее.
Я покажу вам простой пример:
activity_main.xml
<!-- ... -->
<include layout="@layout/btn_foo"/>
<!-- ... -->
btn_foo.xml
<?xml version="1.0" encoding="utf-8"?>
<Button
android:id="@+id/btnFoo"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:android="http://schemas.android.com/apk/res/android"/>
MainActivity.kt
// ...
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.btn_foo.*
// ...
setContentView(R.layout.activity_main)
// ...
btnFoo.setOnClickListener { }
Я должен признать, что в других случаях Я вернулся к типичному венгерскому соглашению whatWhereDescription (Size) для установки id
s из-за слишком сильно раздражает иметь дело с импортом среди видов деятельности / фрагментов / просмотра постоянно.