Android_ use getIdentifier()リソースIDを取得します



Android_ Use Getidentifier Gets Resource Id



AndroidリソースIDを取得する別の方法であるIDは、特定のフォルダー内のリソースを取得するための次のルーチンです。より特別なフォルダーの場合は、他のメソッドのIDを取得する必要があります。

getIdentifier()メソッドを使用すると、アプリケーションパッケージの指定された各リソースIDで簡単に取得できます。
主な方法は2つあります。
(1)方法1



String path = 'com/drawable/resource/imageName.png' InputStream is = getClassLoader().getResourceAsStream(path) Drawable.createFromStream(is, 'src')
  1. 最初のパラメータ形式は次のとおりです。パッケージ名+:+リソースフォルダ名+ / +リソース名この形式の場合、他の形式はnullになる可能性があります


(2)2番目の方法

Resources resources = context.getResources() int indentify = resources.getIdentifier(org.loveandroid.androidtest:drawable/icon',null,null) if(indentify>0){ icon = resources.getDrawable(indentify) }
  1. 最初のパラメーターは名前ID、リソースまたは属性の2番目のIDはDrawable、3番目のパッケージ名です。


見つかった場合はリソースIDを返し、見つからなかった場合は0を返します。

1つのメソッドを記述しました:戻り値がない場合はリソースIDを取得します0



Resources resources = context.getResources() int indentify= getResources().getIdentifier('icon', 'drawable', 'org.anddev.android.testproject')

データベースから画像名を読み取り、画像を呼び出します。直接R.drawable。?電話できません。私はたくさんの場所をチェックし、ついにみんなが共有し、助けたいと思う方法を見つけました。
主に2つの方法、2番目の個人的な推奨事項。
1.画像をres / drawableの下に置かないでください。ただし、srcのパッケージ(com.drawable.resourceなど)に保存します。この場合、メソッドを呼び出します。

static int getResourceId(Context context,String name,String type,String packageName){ Resources themeResources=null PackageManager pm=context.getPackageManager() try { themeResources=pm.getResourcesForApplication(packageName) return themeResources.getIdentifier(name, type, packageName) } catch (NameNotFoundException e) { e.printStackTrace() } return 0 }

2.それでも画像で直接解像度/ドローアブルを使用する場合は、次の方法が必要です。
プロジェクトを作成するとします。パッケージの名前を次のように入力します:com.test.image

|_+_|