2011-07-13 155 views
8

我正在開發一個應用程序,並且我正在收集錯誤。我在res/values/strings中放入了一些字符串資源並保存了它。現在,如果我要訪問它在活動中,我得到了如下的錯誤Android,找不到字符串資源

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

我不知道該怎麼做,因爲我以前從來沒有像這樣的問題。 請幫幫我。謝謝大家。

回答

14

有時我得到這個錯誤(每兩天一次),這是因爲eclipse並沒有編譯新的代碼,而是部署了舊的apk。 我通過

  • 解決此上蝕做一個乾淨的(項目 - >清潔)
  • 通過從命令行運行adb kill-serveradb start-server關閉模擬器
  • 重新啓動ADB服務器
+1

這是針對之前版本的android IDE,它基於Eclipse,不適用於Android Studio。 – Augusto

10

最有可能有一個額外的import android.R;然後你的字符串不能在那裏找到。否則,清理項目並重建它,再試一次,然後回報。

+0

是第二次我忘了檢查這個瘋狂的進口!謝謝利亞。 –

0

在eclipse中清理項目,並嘗試運行。如果這不能解決您的問題,請從已經運行的模擬器卸載應用程序,然後從eclispe重新運行它。

9

我所是

import android.R;

,而不是

import com.example.project.R;

android.R沒有你的資源,它只有一般的Android資源。

+0

這是我的項目中的問題,謝謝 – Aladdin

+0

+1這是我的情況和解決方案。 – hengxin

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

} 
-1

我也遇到了這個問題,這是非常首先連線。 1:我確定我將正確的R導入到我的課程中 2:我在gen文件夾中檢查R.java,並且資源ID在那裏。 3:我清理了我的項目,並從我的手機中刪除,並重新啓動 仍然存在異常。

最後我找到原因: 我剛剛在特定於語言的文件夾(比如values-zh)的strings.xml中添加了我的資源字符串,但在默認值文件夾中的默認strings.xml中錯過了它。

然後解決。

0

有兩種情況下,你可能會得到這個錯誤

貴國的strings.xml文件沒有正確地稱爲?

答案:根據您的應用程序爲R.java文件提供正確的軟件包名稱?

2.如果你保持正確的string.xlm路徑,你可能會得到錯誤?

Ans:一旦清潔並建立投影機,重新啓動eclipse或android studio。

感謝 krishh