2011-07-13 78 views
8

Tôi đang làm việc trên một ứng dụng và tôi gặp phải các lỗi đã xảy ra. Tôi đặt một số tài nguyên String vào res/values/strings và lưu nó. Bây giờ Nếu tôi muốn truy cập nó trong một Hoạt động, tôi nhận được một lỗi như thế nàyAndroid, không tìm thấy tài nguyên chuỗi

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

Và tôi không thể hiểu tại sao. Resource trông như thế này:

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

và tôi muốn để truy cập nó như

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

Tôi cũng nhìn vào R.java và thấy nhập của tôi

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

Tôi không biết phải làm gì, bởi vì tôi chưa bao giờ gặp vấn đề như thế này trước đây. Xin hãy giúp tôi. Cảm ơn tất cả.

Trả lời

14

Thỉnh thoảng tôi gặp lỗi này (2 ngày một lần), và đó là vì nhật thực không biên dịch mã mới và đang triển khai gói ứng dụng cũ. tôi sửa lỗi này bằng

  • làm sạch trên eclipse (Dự án -> sạch)
  • đóng giả lập
  • khởi động lại máy chủ adb bằng cách chạy adb kill-serveradb start-server từ dòng lệnh
+1

Đây là phiên bản trước của IDE android, được dựa trên Eclipse và không áp dụng cho Android Studio. – Augusto

10

Rất có thể có thêm import android.R; Sau đó, chuỗi của bạn không thể tìm thấy ở đó. Nếu không, hãy làm sạch dự án và xây dựng lại dự án, thử lại, sau đó báo cáo lại.

+0

Lần thứ hai tôi quên kiểm tra thông tin nhập này !, Cảm ơn Elijah. –

0

Làm sạch dự án trong nhật thực và thử chạy. Nếu điều này không giải quyết được sự cố của bạn, từ trình mô phỏng đã chạy ứng dụng và chạy lại từ eclispe.

9

những gì tôi đã có được

import android.R;

thay vì

import com.example.project.R;

android.R không có tài nguyên của mình nó chỉ có các nguồn lực android nói chung.

+0

đây là vấn đề trong dự án của tôi, cảm ơn – Aladdin

+0

+1 đó là trường hợp của tôi và giải pháp hoạt động. – hengxin

0

Tôi hiện đang viết "net.superlinux.tcltktutorials", bạn có thể tìm thấy nó trên cửa hàng chơi ngay bây giờ. ngay trong ứng dụng, tôi muốn sử dụng cách sử dụng ngôn ngữ tiêu chuẩn thay vì cách làm ngôn ngữ của tôi. Tôi đã phải thêm cho tiếng Ả Rập/res/vlaues-ar và tôi có mặc định cho tiếng Anh/res/giá trị. Ứng dụng này là về hướng dẫn ngôn ngữ lập trình TCL/Tk dựa trên danh sách phát trên YouTube. bây giờ danh sách phát có thể bằng tiếng Ả Rập và bằng tiếng Anh. Những gì tôi nhận thấy là nếu bạn có trong các mục nhập mặc định/res/values ​​36 và trong/res/values-ar 35 cho cùng một danh sách phát, điều này sẽ làm cho ngoại lệ ResourceNotFound. Tất cả những gì bạn phải làm là thêm mục bị thiếu khi trống ở cuối danh sách của bạn chỉ để làm cho nó bằng số bằng tiếng Anh và tiếng Ả Rập, Ngay cả khi danh sách phát tiếng Anh ít về số.

Đây là phương pháp của tôi thêm vào danh sách nhạc được hình thành bên trong các hoạt động danh sách, và cũng là một cách thông minh của việc sử dụng các nguồn lực như xml xây dựng trong dữ liệu:

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

Tôi cũng đã gặp vấn đề này và nó là rất có dây lúc đầu. 1: Tôi đảm bảo rằng tôi nhập đúng R vào lớp học của tôi 2: Tôi đã kiểm tra R.java trong thư mục gen và id tài nguyên ở đó. 3: Tôi đã làm sạch dự án của mình và xóa khỏi điện thoại và khởi chạy lại nó ngoại lệ vẫn còn đó.

Cuối cùng tôi đã tìm ra lý do: Tôi vừa thêm chuỗi tài nguyên vào chuỗi strings.xml trong thư mục ngôn ngữ cụ thể (nói giá trị zh) nhưng đã bỏ qua nó trong chuỗi strings.xml mặc định trong thư mục giá trị mặc định.

sau đó nó được giải quyết.

0

Có hai trường hợp bạn có thể gặp phải lỗi này

1.tệp strings của bạn.xml không được giới thiệu chính xác?

Trả lời: cung cấp tên gói đúng cho tệp R.java theo ứng dụng của bạn?

2.if bạn giữ đúng đường dẫn string.xlm bạn có thể gặp lỗi không?

Trả lời: sau khi làm sạch và xây dựng máy chiếu, khởi động lại nhật thực hoặc studio android.

Cảm ơn krishh

Các vấn đề liên quan