layout-xxx / вызывает столкновение файлов класса типов: ресурс существует с другим регистром: ‘….R $ID.class ‘

#android #layout #screen-size

#Android #макет #размер экрана

Вопрос:

В моем Android-проекте со стандартным макетом все работает нормально, однако всякий раз, когда я добавляю новый подкаталог layout-xxx, скажем layout-large, и копирую в него XML-файл, который будет моим исходным кодом для нового размера, о котором идет речь, с этого момента я получаю ошибку, указанную выше, и проект не будет компилироваться.

Столкновение файлов Location TypeClass: ресурс существует с другим регистром: ‘R $ID.class ‘

Если я удалю XML-файл из каталога layout-xxx, все вернется к нормальной работе. У меня действительно есть теги экрана поддержки в манифесте.

Возможно, мне не нужно идентифицировать все мои представления и тому подобное внутри моего макета с отдельными именами для отдельных файлов макета, не так ли? Это сделало бы кодирование настолько чрезмерно условным, что оно того не стоило бы.

Что я делаю не так? или отсутствует?

Комментарии:

1. Вам определенно не следует изменять идентификаторы макета; это нарушило бы точку привязки ресурса. Вы пытались очистить свой проект после копирования файла? Кроме того, можете ли вы опубликовать пример макета, который вызывает проблемы?

2. Да, я действительно запустил чистую и т.д. увы, безрезультатно. Макет представляет собой очень простой ScrollView с RelativeLayout внутри .. а затем различные виджеты.

3. @user756212: Это что-то такое же простое, как наличие TextView (например) в одном файле макета с идентификатором textView1 и в другом файле макета с именем textview1 ? Другими словами, одно и то же имя, но отличающееся только символами верхнего / нижнего регистра.

4. Нет, это не столкновение разных элементов, имеющих один и тот же идентификатор между определениями представления. Кажется, я решил это, снова скопировав XML .. но теперь у меня возникают проблемы с тем, что он не подбирает определения layout-large .. разве WVGA854 не считается большим в 2.2?

5. @user756212 — Не обязательно. Большой относится к размерам экрана, а не к разрешению. Большой экран с разрешением ldpi может иметь меньше пикселей по ширине, чем обычный экран с разрешением xhdpi. Эмулятор использует загадочную формулу (по крайней мере, я не нашел для нее никакой документации), чтобы объединить размер и плотность пикселей обложки с масштабированием дисплея для классификации эмулируемого устройства.

Ответ №1:

У меня была такая же проблема сегодня, и это было из-за моей ошибки.

Мое меню было определено следующим образом

 <?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:id="@ id/menu_item_share_action_provider_action_bar"
        android:showAsAction="always"
        android:title="@string/action_bar_share_with">
        <menu >
            <item android:id="@ Id/someid"
                android:title="MyMenu"/>
        </menu>
        </item>
</menu>
  

Причиной ошибки был идентификатор с заглавной буквы I, который на самом деле должен быть похож на id

Надеюсь, это кому-то поможет