18

Androidライブラリ(com.appocaliptic.quizknife.core)を使用するAndroidプロジェクト(com.appocaliptic.quizknife.app)があります。

私がやろうとしているのは、ライブラリである画像のリソース ID を取得することです。画像へのパス: res/drawable-xhdpi/fr_200_133.png

ただし、getIdentifier の結果はすべて 0 で試行されます。どこに問題がありますか?

resId = getResources().getIdentifier("fr_200_133", "drawable", "com.appocaliptic.quizknife.core");
resId = getResources().getIdentifier("com.appocaliptic.quizknife.core:drawable/"+"fr_200_133", null, null);
resId = getResources().getIdentifier("drawable/fr_200_133", null, "com.appocaliptic.quizknife.core");

編集:

ああ、そしてR.javaにはdrawableとcorensponding属性があります。

4

5 に答える 5

38

私は同じ問題に直面しました:「getIdentifier result 0」そして、 R.javaファイルの名前と一致するように画像拡張子(* .jpg、* .jpegなど)を削除して解決しました

于 2013-03-07T09:08:46.087 に答える
33

ライブラリ パッケージ名は使用しないでください。代わりにこれを試してください:

resId = getResources().getIdentifier("fr_200_133", "drawable", getPackageName());

(またはgetContext().getPackageName()これがビューで実行されている場合)。

重要なのは、ライブラリのパッケージ名 (実際にはアプリの作成時に消える) ではなく、アプリのパッケージ名 (マニフェストにリストされている) を使用する必要があることです。

于 2012-09-12T20:23:18.920 に答える
12

私は同じエラーを受け取っていましたが、うまくいったのは別の方法でそれを行うことだけでした:

resourceId = R.drawable.class.getField("fr_200_133").getInt(null);
于 2013-12-12T05:56:08.500 に答える