Android, строковый ресурс не найден - PullRequest
12 голосов
/ 13 июля 2011

Я работаю над приложением и получаю ошибочные сообщения. Я вставил какой-то строковый ресурс в res/values/strings и сохранил его. Теперь, если я хочу получить доступ к нему в Деятельности, я получаю сообщение об ошибке, подобное этому

07-13 11:16:20.050: ERROR/AndroidRuntime(5883): Caused by: android.content.res.Resources$NotFoundException: String resource ID #0x7f060006

И я не могу понять, почему. Ресурс выглядит так:

<string name="dialog_download_text">please wait while downloading</string>

и я хочу получить доступ к нему как

public void onCreate(Bundle b){
    super.onCreate(b);
    String s = getResources().getString(R.string.dialog_download_text);
}

Я также заглянул в R.java и нашел свой вход

public static final class string {
    public static final int dialog_download_cancel=0x7f060005;
    public static final int dialog_download_text=0x7f060007;
    public static final int dialog_download_title=0x7f060006;
}

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

Ответы [ 8 ]

17 голосов
/ 13 июля 2011

Иногда я получаю эту ошибку (один раз каждые 2 дня), и это потому, что eclipse не компилирует новый код, а развертывает старый apk.Я исправил это,

  • , выполнив очистку по затмению (Project -> clean)
  • , закрыв эмулятор
  • , перезапустив сервер adb, запустив adb kill-server и adb start-server из командной строки
13 голосов
/ 13 июля 2011

Скорее всего, есть дополнительные import android.R; Тогда ваша строка не может быть найдена там.В противном случае очистите проект и перестройте его, попробуйте снова, а затем отправьте отчет.

12 голосов
/ 18 ноября 2012

что у меня было

import android.R;

вместо

import com.example.project.R;

android.R не имеет ваших ресурсов, он имеет только общие ресурсы android.

0 голосов
/ 17 июня 2016

В двух случаях вы можете получить эту ошибку

1. Ваш файл strings.xml не указан правильно?

Ответ: укажите правильное имя пакета для файла R.java согласноваше приложение?

2.Если вы сохранили правильный путь string.xlm, вы все равно можете получить ошибку?

Ответ: после очистки и сборки проектора перезапустите eclipse или android studio.

Спасибо, Криш

0 голосов
/ 29 октября 2014

Я тоже сталкивался с этой проблемой, и вначале она очень проводная 1: я удостоверяюсь, что импортирую правильный R в мой класс 2: я проверил R.java в папке gen и там есть идентификатор ресурса. 3: я очистил свой проект и удалил из телефона и перезапустить его исключение все еще там.

Наконец-то я нашел причину: Я просто добавил свою строку ресурса в strings.xml в папке для конкретного языка (скажем, values-zh), но пропустил ее в файле strings.xml по умолчанию в папке значений по умолчанию.

тогда это решено.

0 голосов
/ 15 марта 2013

В настоящее время я пишу «net.superlinux.tcltktutorials», которые вы можете найти в магазине Play сейчас. Теперь в приложении я хочу использовать стандартный способ использования локалей вместо того, чтобы делать локали. Мне пришлось добавить для арабского / res / vlaues-ar, и у меня есть значение по умолчанию для английского / res / values. Приложение основано на рекламе YouTube Playlist TCL / Tk. Теперь плейлист может быть на арабском и английском языках. Что я заметил, так это то, что если у вас есть 36 записей по умолчанию / res / values ​​и 35 записей / res / values-ar для одного и того же списка воспроизведения, это сделает исключение ResourceNotFound. Все, что вам нужно сделать, это добавить отсутствующую запись как пустую внизу списка, чтобы сделать ее равной по номерам на английском и арабском языках, даже если в английском списке воспроизведения меньше цифр.

Это был мой метод добавления в список воспроизведения, сформированный в списке действий, а также умный способ использования ресурсов в качестве встроенных данных XML:

package net.superlinux.tcltktutorials;
import java.util.ArrayList;
import java.util.List;
import android.app.ListActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class ListOfVideos extends ListActivity {

List<String> model = new ArrayList<String>();
ArrayAdapter<String> adapter = null;
List<String> filename = new ArrayList<String>();

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);
    setContentView(R.layout.listview);



     adapter = new ArrayAdapter<String> (this, R.layout.list_item, model);


    load_playlist();
    setListAdapter(adapter);



}


@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
            super.onListItemClick(l, v, position, id);
    String selected_youtube_video=filename.get(position);
    try {Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("vnd.youtube:"+selected_youtube_video));
startActivity(i);
    }
    catch(Exception e){

        startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.youtube.com/watch?v="+selected_youtube_video+"&loop=1&autoplay=1")));
        e.printStackTrace();
    }
}

void load_playlist()
{

    int display_id=0;
    int file_id=0;
    //loop forever until nothing has to be added to the ListView or stop if the list item
    // to be added does not exist.
    for (int i=0;;i++){
        display_id=getResources().getIdentifier("display_"+i, "string", getPackageName());
    if (display_id!=0 && getString(display_id).length()!=0)
        adapter.add(getString(display_id));
    else {
        Log.e("string id not found or empty","R.string.display_"+i );
        return;
    }
    file_id=getResources().getIdentifier("file_"+i, "string", getPackageName());
    if (file_id!=0 && getString(file_id).length()!=0){
    filename.add(getString(file_id));
    }
    else {
        Log.e("string id not found or empty","R.string.file_"+i );
        return;
    }
    }
}

}
0 голосов
/ 08 февраля 2012

Очистите проект в eclipse и попробуйте запустить. Если это не решит вашу проблему, из уже работающего эмулятора удалите приложение и снова запустите его из eclispe.

0 голосов
/ 15 июля 2011

Оформить заказ в этой теме, это исправило мою проблему. R не может быть разрешена - ошибка Android

...