No AndroidStudio, quando crio um projeto usando uma atividade vazia, obtenho o seguinte trecho de código no MainActivity.java
arquivo:
package my.company.my_proj;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
onde uma classe criptografada chamada R
é usada. Qual é o objetivo desta aula R
?
android.R
?O que é R: Não há nada de muito misterioso sobre R. É apenas uma classe que tem muitas subclasses estáticas, abra-a no eclipse e dê uma olhada (está sob gen /).
Cada membro desta classe é uma de duas coisas: 1) classes finais estáticas ou 2) inteiros finais estáticos que são únicos em relação aos outros membros de sua classe.
Por que é tão enigmático: é fácil se confundir porque R é gerado automaticamente pela formiga. É enigmático porque você não deve "tocá-lo" manualmente (é claro que pode, mas suas alterações serão automaticamente apagadas na regeneração). Além disso, é enigmático porque às vezes o eclipse importa automaticamente o arquivo R padrão do android (conforme discutido nas respostas acima)
Por que é sempre o primeiro que não pode ser resolvido: R segue exatamente as regras das classes e pacotes Java, não há nada de especial em como o R atua com relação à importação. R será automaticamente colocado no pacote especificado pela entrada do pacote em seu arquivo de manifesto
Para ver a qual pacote seu arquivo R pertence, basta abrir a pasta gen / no eclipse (visualização de pacotes). Você verá um pacote listado lá, ele terá o nome que você especificou em seu manifesto. Tente excluí-lo, ele voltará se todos os seus recursos seguirem as regras de nomenclatura corretas e todos os seus arquivos xml seguirem as regras xml corretas e se a construção automática for habilitada no eclipse.
A chave para entender o arquivo R é perceber que ele está no mesmo pacote que as outras classes, embora esteja em um diretório diferente de outros arquivos pertencentes ao seu pacote "principal". Depois de entender isso e entender a sintaxe e a nomenclatura dos arquivos de recursos, é fácil solucionar problemas com o R.
fonte
R é o nome dos seus recursos. Qualquer recurso que você acessa
R.$FOLDER.$RESOURCE
ou algo muito semelhante.Se não puder ser resolvido, verifique se o caminho está correto e se o recurso referenciado existe (diferencia maiúsculas de minúsculas; inclua a extensão).
Além disso, a parte confusa (para mim, pelo menos) é que existem dois
R
's diferentes . Se você estiver recebendo muitos erros "Não pode ser resolvido", tente ver o que está importando. Tente alterá-lo ou removê-lo. Ou você pode tentar limpar seu projeto (AVISO: às vezes isso torna as coisas piores do que já estão).fonte
R
arquivo. De vez em quando, ele perde a etapa de "regeneração", deixando-me sem (ou com um vazio)R
eR
é programado para desfazer automaticamente quaisquer alterações feitas à mão.Android R.java é um arquivo gerado automaticamente pelo AAPT (Android Asset Packaging Tool) que contém IDs de recursos para todos os recursos do diretório res /. Se você criar qualquer componente no arquivo activity_main.xml, o id para o componente correspondente é criado automaticamente neste arquivo. Este id pode ser usado no arquivo de origem da atividade para realizar qualquer ação no componente.
fonte