2013-05-05 2 views
1

Я очень новичок в разработке Android (у меня есть опыт Obj-C с Cocoa Touch, хотя). Я проверял свой первый Android приложение, как я столкнулся эти ошибки синтаксиса:R.java: Ошибка синтаксиса на токенах

Синтаксис ошибки на знак «100000», недействительных VariableDeclaratorId

Синтаксис ошибка маркера «11», удалите этот маркер

Синтаксис ошибка на знак «2», удалите этот маркер

Синтаксис ошибку на маркер «5000», недопустимое VariableDeclaratorId

Синтаксическая ошибка на лексемы «61», недействительным VariableDecla ratorId

Синтаксическая ошибка на лексемы «69», недействительны VariableDeclaratorId

Когда я дважды щелкнул их, они оказались в файле R.java, и я понятия не имею, как они вызываются.

public static final class drawable { 
     public static final int 100000=0x7f020000; 
     public static final int 11ba=0x7f020001; 
     public static final int 2values=0x7f020002; 
     public static final int 5000=0x7f020003; 
     public static final int 61=0x7f020004; 
     public static final int 69=0x7f020005; 
    ..... 

Было бы здорово, если бы кто-нибудь мог сказать, как это вызвано.

[Обновления]

MarsAtomic предположил, что это вызвано не следуя соглашениям об именах для Android ресурсов и, возможно, имея rawables под названием «5000», «69», который, как по сути, верно Это дело.

После изменения имен эти исключения больше не встречались.

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

ответ

4

Мой комментарий исчез как-то, но ... каждый язык именования. Соглашения обычно основаны на некоторых полу-произвольных эвристиках, потому что у вас должны быть правила (например, несколько более ясно, что «a1» обозначает имя переменной, тогда как переменную с именем «1» можно путать для значения).

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

2

Вы не можете объявлять имена переменных, начиная с цифр.

+0

Совершенно ясно, что OP * не * написал код, цитируемый. Он автоматически генерируется из чего-то * другого * созданного OP, и он/она не знает, что это такое. (Я тоже не делал разработку Android.) –

3

После изменения имен эти исключения больше не встречались.

Но я все равно хотел бы знать, почему это происходит.

Поскольку имена этих ресурсов используются в качестве имен полей в авто сгенерированных исходного файла Java (R.java), и они не являются допустимыми именами Java полей. Имена полей Java должны начинаться с буквы. Подробности о символах, разрешенных в именах полей here in the JLS.

(Действительно, MarsAtomic должны получить кредит на это, но, кажется, не видел вопрос повторно отправил.)

+0

Большое вам спасибо. Это очень полезно! –

0

R.класс автоматически генерируется, если вы что-то измените в нем, это будет работать неправильно.

Thy to Clean and Build your Project.

0

Если вы получите сообщение об ошибке в

public static final class drawable { 

наиболее распространенной ошибкой является именованным .png файл в вашем разрешении папку, начиная с номера.

Например, 1_pic.png, 2015_22_22pic.png и так далее.

Правильный способ: pic_1.png

-2

Посмотрите на УЭ каталогов. У вас может быть файл с указанной выше числовой последовательностью, например 00000002. Чтобы решить проблему, просто удалите ее из папки.

0

Среди всех папок, расположенных внутри \ res \, и найдите файл с именем, отличным от других, как 00000002. Если вы найдете, просто удалите его. Затем щелкните имя своего проекта в eclipse, а затем нажмите клавишу F5, чтобы обновить его. Таким образом, ошибка исчезнет, ​​и ваш R-файл будет обновлен.

Смежные вопросы