NoSuchFieldError: нет статического поля listView1 типа I в классе Lcom / disdemo / R $ id; или его суперклассы

89

У меня есть module1 (в Android Studio) с listView1 in activity_main.xml(присутствует в res of the module1). MainActivity этого модуля запускается из другого модуля2 в том же проекте Android Studio.

Я попытался удалить module1 и снова создать новый с теми же файлами res и java. Тем не менее, у меня такая же проблема.

Комал Гупта
источник
Я добавил модуль в settings.gradle и build.gradle
Gupta
14
У меня был макет activity_main.xml в одном из других моих модулей, поэтому я получал эту ошибку NoSuchField. Я переименовал макет в одном из своих модулей, и он сработал.
Komal Gupta
Хотел бы я прочитать ваш комментарий 48 часов назад, боролся с этой проблемой 2 дня назад !!
Mani
2
Мой случай был немного другим, так как я перемещал строковый ресурс из одного модуля в другой. В моем случае мне просто нужно было нажать Build> Clean в Android Studio, чтобы исправить проблему.
Тони Уикхэм
Да, для вас это не было проблемой дублирования файла ресурсов, поэтому очистка -> сборка сработала.
Komal Gupta

Ответы:

202

Я думаю, у вас есть макет как в библиотеке, так и в модуле с тем же именем или надувание нескольких макетов xml с повторяющимся идентификатором ресурса.

JosephM
источник
4
Да, именно так. Вскоре я понял это, но, к сожалению, на это было потрачено много времени, поскольку сообщение об ошибке было недостаточно интуитивно понятным. Android Studio должна начать регистрировать более подробные сообщения об ошибках.
Комал Гупта
7
звучит неплохо! теперь вы должны пометить его как одобренный, чтобы это могло помочь другому решить проблему такого типа.
JosephM
1
Если вы используете рефакторинг-переименование AS, он переименовывает все вхождения, например activity_main.xml, лучше сделать это вручную.
serv-inc
Я получал эту ошибку из-за двух макетов с одинаковым именем в приложении и модуле. Благодарность!
Сандип Йоханс
31

В обоих модулях у вас есть файл activity_main.xml. Пожалуйста, переименуйте один файл.

Обновление: @kundan kamal хочет выразить то, что у вас есть файл макета в обоих модулях с одинаковым именем.

Кундан Камал
источник
2
это потрачено впустую на 3 часа :(. вы спасете мой день
karthik kolanji
8

вы используете несколько модулей и даете то же имя любому макету xml, а затем даете эту ошибку, поэтому переименуйте свой макет xml.

user7176550
источник
Спасибо. Это помогло
Vigneswaran A
0

У меня такая ошибка случилась однажды, но с stringресурсом. У меня была настроена строка в файле перевода, но не в файле ресурсов строки по умолчанию, поэтому это привело к сбою.

бластервла
источник
0

Сделайте меня правильным Если я не ошибаюсь ... Я думаю, что у вас есть то же имя вашей библиотеки и модуля в вашем проекте, поэтому вам нужно переименовать один из них, тогда он будет работать нормально

Манну Сарасват
источник
0

У меня сработали правила прогарда. У меня был двухуровневый гвардеец. Сначала в моей зависимости, а затем в моем приложении. Пришлось сделать это в моем градиенте зависимости.

Заповедник R. . вещи.

-keepclassmembers class **.R$* {
    public static <fields>;
}

Сохраните все имена собственных методов и имена их классов.

-keepclasseswithmembernames class * {
    native <methods>;
}
Мохит Сингх
источник