studio programacion para móviles libro edición desarrollo desarrollar curso aprende aplicaciones java android arcgis esri

java - programacion - Android-Recurso esperado de ID de tipo



manual de programacion android pdf (3)

Tengo este codigo

final static int TITLE_ID = 1; final static int REVIEW_ID = 2;

Ahora, quiero crear un nuevo diseño en mi clase principal

public View createContent() { // create linear layout for the entire view LinearLayout layout = new LinearLayout(this); layout.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT)); layout.setOrientation(LinearLayout.VERTICAL); // create TextView for the title TextView titleView = new TextView(this); titleView.setId(TITLE_ID); titleView.setTextColor(Color.GRAY); layout.addView(titleView); StarView sv = new StarView(this); sv.setId(REVIEW_ID); layout.addView(sv); return layout; }

Pero cuando llamo a TITLE_ID y REVIEW_ID, me da un error

Proporcionar el tipo incorrecto de identificador de recursos.
Por ejemplo, al llamar a Resources.getString (int id), debe pasar R.string.something, no R.drawable.something.
Pasar la constante incorrecta a un método que espera una de un conjunto específico de constantes. Por ejemplo, al llamar a View # setLayoutDirection, el parámetro debe ser android.view.View.LAYOUT_DIRECTION_LTR o android.view.View.LAYOUT_DIRECTION_RTL.

No tengo ningún problema para ejecutar este código. Me pregunto por qué me da un error. ¿Alguna idea?


Esto no es un error del compilador. Es solo un error de validación del editor (advertencia de pelusa) ya que esta no es una forma común de tratar los identificadores.

Así que si su aplicación es compatible con API 17 y superior,

puede llamar a View.generateViewId como

titleView.setId(View.generateViewId());

y

sv.setId(View.generateViewId());

y para API <17

  1. res/values/ carpeta res/values/ proyecto de su proyecto.
  2. crear un archivo xml llamado ids.xml

Con el siguiente contenido:

<?xml version="1.0" encoding="utf-8"?> <resources> <item name="titleId" type="id" /> <item name="svId" type="id" /> </resources>

entonces en tu código,

titleView.setId(R.id.titleId);

y

sv.setId(R.id.svId);

Y para desactivar esta advertencia (si quieres).

En Android Studio, haga clic en la bombilla en línea con este ''error''. Y seleccione Deshabilitar inspección en el primer submenú.


Incluyo esto como una alternativa para "arreglar" el problema para aquellos que no pueden generar una ID de vista (es decir, definir la ID antes de que la vista esté realmente presente) y saber qué están haciendo.

Directamente sobre una declaración de variable o un método que contiene el problema, simplemente incluya @SuppressWarnings("ISSUE_IDENTIFIER") para deshabilitar la advertencia de pelusa para esa instancia.

En este caso, sería @SuppressWarnings("ResourceType")

Usar métodos generales para deshabilitar el tipo de advertencia es una mala práctica y puede provocar problemas imprevistos, como pérdidas de memoria y códigos inestables. No publiques basura.

Asegúrese de deshacer la opción para Disable inspection y eliminar estas líneas del build.gradle:

android { lintOptions{ disable "ResourceType" } }


También puede desactivar la pelusa en el archivo build.gradle. Agrega estas líneas en tu archivo build.gradle.

android { lintOptions{ disable "ResourceType" } }