Quero acessar um recurso como uma String ou um Drawable pelo nome e não pelo ID int.
Qual método eu usaria para isso?
java
android
android-resources
Aswan
fonte
fonte
Respostas:
Será algo como:
R.drawable.resourcename
Certifique-se de não
Android.R
importar o espaço para nome, pois isso pode confundir o Eclipse (se é isso que você está usando).Se isso não funcionar, você sempre pode usar o
getResources
método de um contexto ...Onde
this.context
está intialised como umActivity
,Service
ou qualquer outraContext
subclasse.Atualizar:
Se é o nome que você deseja, a
Resources
classe (retornada porgetResources()
) possui umgetResourceName(int)
método e umgetResourceTypeName(int)
?Atualização 2 :
A
Resources
classe possui este método:Que retorna o número inteiro do nome, tipo e pacote do recurso especificado.
fonte
R.drawable.resourcename
é o número inteiroSe eu entendi direito, é isso que você quer
Onde "this" é uma Atividade, escrita apenas para esclarecer.
Caso você queira uma String em strings.xml ou um identificador de um elemento da interface do usuário, substitua "drawable"
Eu aviso, essa maneira de obter identificadores é realmente lenta, use somente quando necessário.
Link para a documentação oficial: Resources.getIdentifier (Nome da string, String defType, String defPackage)
fonte
fonte
•
Kotlin Version
viaExtension Function
Para localizar uma identificação de recurso pelo nome No Kotlin, adicione o trecho abaixo em um arquivo kotlin:
ExtensionFunctions.kt
•
Usage
Agora todos os IDs de recursos estão acessíveis onde quer que você tenha uma referência de contexto usando o
resIdByName
método:fonte
Uma maneira simples de obter o ID do recurso da string. Aqui resourceName é o nome do recurso ImageView na pasta drawable que também está incluída no arquivo XML.
fonte
Eu sugiro que você use meu método para obter uma identificação de recurso. É muito mais eficiente do que usar o método getIdentidier (), que é lento.
Aqui está o código:
fonte
fonte
Eu achei essa classe muito útil para lidar com recursos. Possui alguns métodos definidos para lidar com dimens, cores, drawables e strings, como este:
fonte
além da solução @lonkly
método:
fonte
No Kotlin, o seguinte funciona bem para mim:
Se o recurso estiver na pasta mipmap, você poderá usar o parâmetro "mipmap" em vez de "drawable".
fonte