TL; DR , se você receber o erro "pacote R não existe", os motivos possíveis são
- algum erro nos arquivos de recursos XML
-> corrigir erros XML
- o pacote atual é diferente do
Rpacote (ver package
atributo em AndroidManifest.xml)
-> Rclasse de importação , por exemplo import com.example.android.R;
-> ou use o pacote apropriado em sua fonte, por exemplo package com.example.android;
-> ou altere o atributo do pacote em AndroidManifest.xml para
<manifest xmlns:android="..." package="com.example.android" ...>, se for apropriado
- os
Rids usados são dos recursos do sistema
-> não importe android.R, mas prefixe os ids ofensivos com android., por exemplo, android.R.layout.simple_list_item_2
você pode importar em android.Rvez de prefixar os ids é claro, mas então você não pode importar mais a Rclasse do aplicativo e deve prefixar os ids do aplicativo, por exemplo com.example.android.R.id.main_menu.
A R classe é gerada automaticamente a partir dos recursos do aplicativo. Ele contém os ids para esses recursos e está contido no pacote nomeado na
<manifest>
tag no AndroidManifest.xmlarquivo correspondente .
Se não houver erros nos arquivos XML de recursos, a R.javafonte será gerada em um subdiretório de pacote abaixo gen/e compilada.
Existe outra Rclasse localizada no androidpacote. Esta android.Rclasse contém algumas classes aninhadas, que por sua vez contêm se idoutros valores para recursos do sistema .
Para usar uma classe em Java, você deve nomear a classe com o pacote inteiro, por exemplo
java.util.List<Object> list = new java.util.ArrayList<Object>();
ou importe a classe e use-a sem o pacote
import java.util.List;
import java.util.ArrayList;
List<Object> list = new ArrayList<Object>();
Você também pode usar uma classe sem nomear o pacote, se a classe atual e a classe usada estiverem no mesmo pacote, por exemplo
package com.example.android;
public class A {
/* ... */
}
package com.example.android;
public class B {
public void useA() {
A a = new A();
}
}