我正在开发一个应用程序,我收到了错误。我在res/values/strings
中添加了一些String资源并保存了它。现在,如果我想在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;
}
我不知道该怎么做,因为我之前从未遇到过这样的问题。 请帮我。谢谢大家。
答案 0 :(得分:17)
有时我会收到此错误(每2天一次),这是因为eclipse没有编译新代码并且正在部署旧的apk。 我通过
来解决这个问题adb kill-server
和adb start-server
重新启动adb服务器答案 1 :(得分:13)
最有可能是额外import android.R;
那么你的字符串就找不到了。否则,清理项目并重建它,再试一次,然后报告回来。
答案 2 :(得分:12)
我的所作所为
import android.R;
而不是
import com.example.project.R;
android.R没有你的资源它只有一般的android资源。
答案 3 :(得分:0)
签出这个帖子,它解决了我的问题。 R cannot be resolved - Android error
答案 4 :(得分:0)
在eclipse中清理项目,然后尝试运行。如果这不能解决您的问题,请从已经运行的模拟器卸载应用程序,然后从eclispe再次运行它。
答案 5 :(得分:0)
我目前正在编写“net.superlinux.tcltktutorials”,您现在可以在Play商店中找到它。 现在在应用程序中,我想使用标准方法来使用语言环境而不是我的方式来做区域设置。我必须添加阿拉伯语/ res / vlaues-ar,我有英语/ res /值的默认值。 该应用程序是基于广告的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;
}
}
}
}
答案 6 :(得分:0)
有两种情况可能会出现此错误
1.您的strings.xml文件未正确引用?
Ans:根据您的应用程序为R.java文件提供正确的包名?
2.如果你保持正确的string.xlm路径,你可能会得到错误吗?
Ans:一旦清理并构建投影仪,请重新启动eclipse或android studio。
由于 krishh
答案 7 :(得分:-1)
我也遇到了这个问题,起初它非常有线。 1:我确保将正确的R导入我的班级 2:我在gen文件夹中检查了R.java,资源ID就在那里。 3:我清理了我的项目并从手机中取出并重新启动它 例外仍然存在。
最后我找到了原因: 我刚刚将我的资源字符串添加到特定于语言的文件夹(比如values-zh)中的strings.xml中,但是在默认值文件夹的默认strings.xml中将其遗漏了。
然后就解决了。