Исключение «Ресурс не найден» при попытке загрузить ресурс в примере упражнения NotepadV1 - PullRequest
16 голосов
/ 06 марта 2011

Я новичок в Android (но не в Java), я следую примеру примера NotepadV1, но я получаю странную ошибку при выполнении на виртуальном устройстве (Hello World отлично работает на этом же vd):

Я получаюисключение «Ресурс не найден» при запуске программы.Используемый идентификатор верен (Eclipse покажет его мне как предложение по автозаполнению, и он четко определен в R.java).Если я использую непосредственно строку вместо идентификатора ресурса, все будет хорошо.

Вот мой string.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string
        name="app_name">Notepad v1</string>
    <string
        name="no_notes">No Notes Yet</string>
    <string
        name="menu_insert">Add Item</string>
</resources>

А вот функция, в которой выдается исключение:

@Override
public boolean onCreateOptionsMenu( Menu menu )
{
    boolean result = super.onCreateOptionsMenu( menu );
    // menu.add( 0, INSERT_ID, 0, R.string.menu_insert ); // exception !
    menu.add( 0, INSERT_ID, 0, "Add Item" ); // ok like this
    return result;
}

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

У кого-нибудь есть идеи?Я что-то пропустил?

Большое спасибо за ваши идеи

Ответы [ 6 ]

33 голосов
/ 22 июня 2011

У меня была такая же проблема, и очистка Проекта в Eclipse решила ее.

1 голос
/ 29 июля 2011

Очень странно, но я смог заставить это работать, сославшись на строку как getResources().getString(R.string.menu_insert)

и переупорядочив строковые константы в файле R.java. no_notes имел более высокое значение, чем menu_insert, но был указан впереди menu_insert. Поэтому я перечислил их в порядке числовой константы, и это сработало:

public static final class string {
    public static final int app_name=0x7f040000;
    public static final int menu_insert=0x7f040001;
    public static final int no_notes=0x7f040002;
}

Доступ к строке через getResources().getString() обычно достаточен, поэтому это может быть ошибка в Eclipse или sdk.

0 голосов
/ 25 февраля 2014

У меня была похожая проблема, когда я переименовал (с помощью рефакторинга) проект. Очистка не помогла, но перезапуск Eclipse помог.

0 голосов
/ 15 октября 2011

Я думаю:

Ресурс:

<?xml version="1.0" encoding="utf-8"?>   
<resources>   
    <string name="exEditTextEmpty">Program could not get access to EditText view</string>
</resources>  

Код:

Exception ex = new Exception(getResources().getString(R.string.exEditTextEmpy));
0 голосов
/ 11 октября 2011

Попробуйте удалить файл R из папки gen Eclipse. Затем он будет восстановлен, и проблема, надеюсь, будет решена.

0 голосов
/ 01 августа 2011

Мне помогло добавление его вручную в strings.xml вместо использования вкладки «Ресурсы».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...