Los identificadores de recursos de Android repentinamente no son definitivos, los campos no se pueden resolver

Estoy trabajando en un nuevo proyecto de edad … Lo estoy haciendo para un mercado de país diferente, y cuando copiaba mi código de un viejo proyecto que muestra algunos errores como MIGRATE ANDROID CODE (A partir de ADT 14, los campos de recursos No se puede utilizar como casos de conmutación.) Esto sucede para los recursos que están en el archivo strings.xml y para el diseño. Pero no me da algún arreglo posible … ¿cómo puedo arreglarlo ???? Aquí está el código:

@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //Here is mistake setContentView(R.layout.main); //Kreira AlertDialog sa dva dugmeta koji ce se pojaviti pri aktiviranju aplikacije ad = new AlertDialog.Builder(this).create(); //And HERE ad.setTitle(getString(R.string.vasa_trenutna_lokacija)); //And HERE ad.setMessage(getString(R.string.da_bi_ste_koristili_aplikaciju)); //And HERE ad.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.dozvoli), new DialogInterface.OnClickListener() { //Klikom na dugme Dozvoli otvara se novi prozor @Override public void onClick(DialogInterface ad, int which) { Intent i = new Intent(NiskiMerakActivity.this, TrenutnaLokacija.class); startActivity(i); finish(); } }); ad.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.ne_dozvoli),new DialogInterface.OnClickListener() { //Klikom na dugme Ne dozvoli aplikacija se zatvara @Override public void onClick(DialogInterface dialog, int which) { finish(); } }); 

A partir de ADT 14, campos de recursos no se pueden utilizar como casos de conmutación.

Esto sucedió a mí también, conseguí este error aunque no estaba utilizando la variable de R en una declaración del interruptor. No se deje engañar por el mensaje de error. Básicamente tienes algún error relacionado con el archivo R.java. Asegúrese de no importar R.java ya que debe tener su propio. Elimine su archivo R.java, cree el proyecto y vea si su archivo R.java se genera. Si no, podría tener un error que impide que su archivo R.java se actualice. Intente Proyecto> Limpiar para encontrar cualquier error. Deshágase de los errores y reconstruya su proyecto para que el archivo R.java se genere y esté al día.

Citando http://tools.android.com/tips/non-constant-fields

La solución para esto es simple: convierta la instrucción switch en una sentencia if-else.

Dado que su fragmento de código anterior no parece tener una instrucción switch() , su pregunta se refiere a una instrucción switch() , supongo que tiene el código incorrecto.

Si su switch-case de los identificadores está dentro de una biblioteca, lamentablemente las nuevas versiones de ADT no lo admiten.

Sin embargo, puedes convertirlo fácilmente en if-else, como se muestra en el sitio web de Google:

 http://tools.android.com/tips/non-constant-fields 

Probablemente sólo necesita Clean su proyecto, es decir, Proyecto -> Limpiar desde el menú principal. No debe haber errores en el código anterior. El problema es sólo con las instrucciones switch . Por favor, trate de limpiar y comente aquí cuál es el resultado.

He arreglado esto cambiando mi importación de android.r; A android.R.*;

Se borraron todos mis errores y pude volver a compilar mi aplicación.

Hoy he estado enfrentando el mismo error, mi proyecto eclipse tiene 1 biblioteca de proyecto agregada, y estaba a punto de cambiar todo el código a las sentencias if, pero me doy cuenta de mi proyecto tenía la biblioteca comprobar, en el proyecto -> propiedades-> android, Así que simplemente lo rechazo y esa fue la solución al problema, también fue una sugerencia de eclipse en sí, leyendo cuidadosamente el código de migración android adt 14 advertencias de constantes para las bibliotecas de proyectos.

He encontrado que funciona después de cambiar la instrucción de importación de R para incluir el nombre del paquete.

Por ejemplo:

Import android.R;

es ahora

Import com.name.package.R;

Sólo tienes que seleccionar en el proyecto eclipse -> limpio, y el problema se resolvió. Recibí este error simplemente creando un nuevo paquete en mi aplicación y eliminándolo.

Estos son los pasos que me ayudan a resolver este problema.

  1. Eliminar R.java (Eclipse lo recreará de inmediato, si no hay un problema con el código o el diseño)
  2. Limpiar el proyecto (menú Eclipse 'Proyecto' y 'Limpiar'
  3. Recompilar el proyecto

Estos pasos resuelven el problema con mi trabajo.

He intentado todos los enfoques mencionados anteriormente con respecto a eliminar el archivo generado de R.java, limpiar, reconstruir, etc, pero ese enfoque no funcionó para mí.

Lo que hizo el trabajo fue reemplazar el caso con una cadena de else-if que era una solución desordenada en mi opinión, pero no pude conseguir que funcione de otra manera.

Estoy usando Eclipse 4.2.1 y Android SDK 4.2.2

  • ¿Cómo puedo pasar valores entre un cuadro de diálogo y una actividad?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.