TL; DR , si obtiene el error "el paquete R no existe", las posibles razones son
- algún error en los archivos de recursos XML
-> corregir errores XML
- el paquete actual es diferente del
Rpaquete (vea el package
atributo en AndroidManifest.xml)
-> importar Rclase, por ejemplo import com.example.android.R;
-> o use el paquete apropiado en su fuente, por ejemplo package com.example.android;
-> o cambie el atributo del paquete en AndroidManifest.xml a
<manifest xmlns:android="..." package="com.example.android" ...>, si es apropiado
- los
Ridentificadores usados son de los recursos del sistema
-> no importar android.R, pero prefijo los identificadores ofensivos con android., por ejemplo, android.R.layout.simple_list_item_2
puede importar en android.Rlugar de prefijar los identificadores, por supuesto, pero luego ya no puede importar la Rclase de la aplicación y debe prefijar los identificadores de la aplicación, por ejemplo com.example.android.R.id.main_menu.
La R clase se genera automáticamente a partir de los recursos de la aplicación. Contiene los ids para estos recursos y está contenido en el paquete nombrado en la
<manifest>
etiqueta en el AndroidManifest.xmlarchivo correspondiente .
Si no hay errores en los archivos XML de recursos, la R.javafuente se generará en un subdirectorio de paquetes a continuación gen/y se compilará.
Hay otra Rclase ubicada en el androidpaquete. Esta android.Rclase contiene algunas clases anidadas, que a su vez contienen idsy otros valores para los recursos del sistema .
Para usar una clase en Java, debe nombrar la clase con el paquete completo, por ejemplo
java.util.List<Object> list = new java.util.ArrayList<Object>();
o importar la clase y luego usarla sin paquete
import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();
También puede usar una clase sin nombrar el paquete, si tanto la clase actual como la clase usada están en el mismo paquete, por ejemplo
package com.example.android;
public class A {
/* ... */
}
package com.example.android;
public class B {
public void useA() {
A a = new A();
}
}