2016-10-26 4 views
0

私はAndroidアプリとリンクしているAndroidライブラリプロジェクトを作成しました。ライブラリプロジェクトのドロウアブルフォルダに、私はいくつかの画像を追加しました。私は次のスニペットAndroidの非アクティビティクラスからdrawableの画像にアクセスできません

Drawable drawable=context.getResources().getDrawable(R.drawable.image); 

Rファイルのインポートが正しいかを使用してそれらにアクセスしようとするとき今私は、同じプロジェクト内の非アクティビティクラスからこれらの画像にアクセスしようとしていますが、彼らはアクセスされていませんイメージIDがRファイルで正しく生成されています。文脈は正しい。私はきれいにして、クリーニング/プロジェクトを複数回ビルドしようとしましたが、何も動作していないようです。

ヘルプ!

+0

「コンテキスト」はどのように取得されていますか? – nandsito

答えて

0

[注意hereからコピーされた回答]

はいすることができますあなたはあなたのライブラリーのパッケージ名を知っていれば。
あなたが行うことができます Resources.getIdentifier(...)

getResources().getIdentifier("res_name", "res_type", "com.library.package");

例:

R.id.settingsは次のようになります。

getResources().getIdentifier("settings", "id", "com.library.package");

+0

これはidを返します。私はdrawableが必要です。どのように変換するのですか?とにかく、どうしてこのことが起こっているのですか? – dexter

+0

識別子は元のコードで 'R.drawable.image'の代わりに使用する識別子です。 – Merlevede

+0

R.drawable.imageは私にdrawableを与えます、これは私に整数を与えます! – dexter

0

私は(完全にクエストを理解していませんあなたの問題メソッドがdrawableを返さないということですか?

私はあなたがコンテキストを取得しているかについて、あなたがわからないんだけど、あなたはこの試みることができる:あなたは、変数のコンテキストを保存している場合

Drawable drawable = ContextCompat(getContext(), R.drawable.image); 

を、あなたが代わりにgetContext()を使用しての変数を渡すことができます。

また、ドロアブルを取得するために使用しているメソッドが削除されているので、もう使用しないでください。

もしあなたがそれを助けてくれたら教えてください。もしこれが正解だったら、これをアップヴォート/選択して覚えておいてください。

関連する問題