16

我正在开发一个应用程序,我遇到了奇怪的错误。我放入了一些字符串资源res/values/strings并保存了它。现在,如果我想在 Activity 中访问它,我会收到这样的错误

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;
}

我不知道该怎么办,因为我以前从来没有遇到过这样的问题。请帮我。谢谢大家。

4

9 回答 9

18

有时我会收到此错误(每 2 天一次),这是因为 eclipse 没有编译新代码,而是部署了旧的 apk。我解决这个问题

  • 在 Eclipse 上进行清理(项目 -> 清理)
  • 关闭模拟器
  • adb kill-server通过运行和adb start-server从命令行重新启动 adb 服务器
于 2011-07-13T09:36:09.537 回答
16

很可能有一个额外的import android.R;然后你的字符串在那里找不到。否则,清理项目并重建它,再试一次,然后报告回来。

于 2011-07-13T09:36:02.013 回答
16

我所拥有的是

import android.R;

代替

import com.example.project.R;

android.R 没有你的资源它只有一般的android资源。

于 2012-11-18T13:11:44.447 回答
0

签出这个线程,它解决了我的问题。 R 无法解决 - Android 错误

于 2011-07-15T02:53:45.533 回答
0

在 eclipse 中清理项目,然后尝试运行。如果这不能解决您的问题,请从已经运行的模拟器中卸载该应用程序,然后从 eclispe 再次运行它。

于 2012-02-08T11:13:01.900 回答
0

我目前正在编写“net.superlinux.tcltktutorials”,您现在可以在 Play 商店中找到它。现在在应用程序中,我想使用使用语言环境的标准方式,而不是使用语言环境的方式。我必须添加阿拉伯语/res/vlaues-ar,并且我有英语/res/values 的默认值。该应用程序是关于基于广告的 YouTube 播放列表 TCL/Tk 编程语言教程。现在播放列表可以是阿拉伯语和英语。我注意到的是,如果您在默认的 /res/values 36 个条目和 /res/values-ar 35 个条目中用于相同的播放列表,这将导致 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;
    }
    }
}

}
于 2013-03-15T17:42:24.927 回答
0

有两种情况您可能会收到此错误

1.您的strings.xml 文件引用不正确?

Ans:根据您的应用程序为 R.java 文件提供正确的包名称?

2.如果你保持正确的string.xlm 路径,你可能还是会出错?

Ans:一旦清理并构建投影仪,重新启动 eclipse 或 android studio。

谢谢克里希

于 2016-06-17T06:23:11.920 回答
0

对于 Kotlin 使用

this->context.resources.getString(R.string.your_string)
于 2021-08-27T04:21:58.913 回答
-1

我也遇到了这个问题,起初它非常有线。1:我确保将正确的 R 导入到我的类中 2:我检查了 gen 文件夹中的 R.java 并且资源 id 在那里。3:我清理了我的项目并从手机中删除并重新启动它,但异常仍然存在。

最后我找到了原因:我只是将我的资源字符串添加到特定语言文件夹(比如 values-zh)中的 strings.xml 中,但在默认值文件夹中的默认 strings.xml 中错过了它。

然后就解决了。

于 2014-10-29T07:11:07.227 回答