TL; DR , se viene visualizzato l'errore "il pacchetto R non esiste", le possibili ragioni sono
- qualche errore nei file di risorse XML
-> correggi gli errori XML
- il pacchetto corrente è diverso dal
Rpacchetto (vedere l' package
attributo in AndroidManifest.xml)
-> Rclasse di importazione , ad esempio import com.example.android.R;
-> o utilizzare il pacchetto appropriato nel sorgente, ad esempio package com.example.android;
-> o modificare la attributo pacchetto in AndroidManifest.xml in
<manifest xmlns:android="..." package="com.example.android" ...>, se appropriato
- gli
RID utilizzati provengono dalle risorse di sistema
-> non importare android.R, ma anteporre agli ID offensivi android., ad esempio, android.R.layout.simple_list_item_2
puoi importare android.Rinvece di anteporre gli ID ovviamente, ma poi non puoi più importare la Rclasse dell'applicazione e devi anteporre gli ID dell'applicazione, ad esempiocom.example.android.R.id.main_menu .
La R classe viene generata automaticamente dalle risorse dell'applicazione. Contiene le ids per queste risorse ed è contenuto nel pacchetto denominato in
<manifest>
tag nel AndroidManifest.xmlfile corrispondente .
Se non sono presenti errori nei file XML delle risorse, il file R.java origine verrà generata in una sottodirectory del pacchetto di seguito gen/e compilata.
C'è un'altra Rclasse situata nel androidpacchetto. Questa android.Rclasse contiene alcune classi nidificate, che a loro volta contengono se idaltri valori per le risorse di sistema .
Per usare una classe in Java, devi nominare la classe con l'intero pacchetto, ad es
java.util.List<Object> list = new java.util.ArrayList<Object>();
oppure importa la classe e poi usala senza pacchetto
import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();
Puoi anche usare una classe senza nominare il pacchetto, se sia la classe corrente che la classe utilizzata sono nello stesso pacchetto, ad es.
package com.example.android;
public class A {
/* ... */
}
package com.example.android;
public class B {
public void useA() {
A a = new A();
}
}