2011-07-13 15 views
8

Estoy trabajando en una aplicación y estoy recibiendo errores de contratación. Puse un recurso de cadena en res/values/strings y lo guardé. Ahora si quiero acceder a él en una actividad me sale un error como esteAndroid, recurso de cadena no encontrado

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

Y no puedo entender por qué. de recursos se ve así:

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

y quiero acceder a ella como

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

también miré en R.java y encontré a mi entrada

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

No sé qué hacer, porque nunca tuve un problema como este antes. Por favor, ayúdenme. Gracias a todos.

Respuesta

14

A veces me sale este error (una vez cada 2 días), y es porque eclipse no está compilando el nuevo código y está implementando la antigua aplicación. que solucionar este problema mediante

  • haciendo una limpieza en Eclipse (Proyecto -> limpia)
  • cerrar el emulador
  • reiniciar el servidor adb ejecutando adb kill-server y adb start-server desde la línea de comandos
+1

Esto es para la versión anterior del IDE de Android, que se basó en Eclipse y no se aplica para Android Studio. – Augusto

10

Lo más probable es que haya un extra import android.R; Entonces su cadena no se puede encontrar allí. De lo contrario, limpie el proyecto y vuelva a generarlo, intente de nuevo y luego repórtelo.

+0

Para la segunda vez que se olvide de comprobar esta importación loca !, Gracias Elías. –

0

Limpie el proyecto en eclipse, e intente ejecutar. Si esto no resuelve su problema, desde un emulador que ya se está ejecutando, desinstale la aplicación y vuelva a ejecutarla desde eclispe.

9

lo que tenía era

import android.R;

en lugar de

import com.example.project.R;

android.R no tiene los recursos que sólo tiene los recursos androide generales.

+0

este es el problema en mi proyecto, gracias – Aladdin

+0

+1 es mi caso y la solución funciona. – hengxin

0

Actualmente estoy escribiendo el "net.superlinux.tcltktutorials" lo puedes encontrar en Play Store ahora. ahora en la aplicación, quiero usar la forma estándar de usar configuraciones regionales en lugar de mi forma de hacer configuraciones regionales. Tuve que agregar para Arabic/res/vlaues-ar y tengo el valor predeterminado para English/res/values. La aplicación se trata de tutoriales de lenguaje de programación TCL/Tk basados ​​en anuncios basados ​​en YouTube Playlist. ahora la lista de reproducción puede estar en árabe y en inglés. Lo que noté es que si tiene 36 entradas por defecto/res/values ​​y entradas/res/values-ar 35 por la misma lista de reproducción, esto hará que la excepción ResourceNotFound sea la excepción. Todo lo que tiene que hacer es agregar la entrada faltante como vacía en la parte inferior de la lista para que sea igual en números en inglés y árabe, incluso si la lista de reproducción en inglés es menor en números.

Esta fue mi método de añadir a la lista de reproducción formado dentro de la actividad de la lista, y también una forma inteligente de utilizar los recursos como XML construido en los datos:

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

También me encontré con este problema y es muy cableado al principio. 1: Me aseguro de importar la R correcta en mi clase 2: Revisé R.java en la carpeta gen y la identificación del recurso está allí. 3: Limpié mi proyecto y lo eliminé de mi teléfono y lo relancé , la excepción todavía existe.

Finalmente encontré el motivo: Acabo de agregar mi cadena de recursos en strings.xml en la carpeta específica del idioma (digamos values-zh) pero la perdí en el archivo por defecto strings.xml en la carpeta de valores predeterminados.

luego está resuelto.

0

Hay dos casos es posible obtener este error

1.yourtotal archivo strings.xml no se conoce correctamente?

Respuestas: ¿da el nombre correcto del paquete para el archivo R.java según su aplicación?

2. Si mantiene la ruta correcta de string.xlm, ¿puede obtener un error de imagen fija?

Resp .: una vez limpio y construya el proyector reinicie el eclipse o el estudio Android.

Gracias krishh

Cuestiones relacionadas