[解決済み] Android、文字列からリソースIDを取得?
2022-04-22 09:41:50
質問
私のクラスの1つのメソッドにリソースIDを渡す必要があります。それは参照が指すidの両方を使用する必要があり、また、文字列を必要とします。どのようにこれを達成するのが最善でしょうか?
例えば
R.drawable.icon
この整数のIDを取得する必要がありますが、文字列 "icon"へのアクセスも必要です。
メソッドに渡す必要があるのは、"icon" の文字列だけであれば、望ましいのですが。
どのように解決するのですか?
エボマイク: 知らなかった
Resources.getIdentifier()
が存在した。
私のプロジェクトでは、次のようなコードを使ってそれを行いました。
public static int getResId(String resName, Class<?> c) {
try {
Field idField = c.getDeclaredField(resName);
return idField.getInt(idField);
} catch (Exception e) {
e.printStackTrace();
return -1;
}
}
の値を取得するために、このような使い方をします。
R.drawable.icon
リソース整数値
int resID = getResId("icon", R.drawable.class); // or other resource class
というブログ記事を見つけたので
Resources.getIdentifier()
は、私がやったようなリフレクションを使うよりも遅いです。
確認する
.
関連
-
アクセス制限です。タイプ 'Application' は API ではありません。
-
Dateが型に解決できない問題を解決する
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] なぜパスワードにはStringではなくchar[]が好まれるのですか?
-
[解決済み] Androidでアクティビティ起動時にEditTextにフォーカスが当たらないようにする方法
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] Javaで数値を小数点以下n桁に丸める方法
-
[解決済み】Android UserManager.isUserAGoat()の正しい使用例?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
eclipse で「アクセス制限: タイプ 'HttpServer' は API ではありません」というプロンプトが表示される。
-
Eclipseでプロジェクトエクスプローラービューとパッケージエクスプローラービューを使う
-
エラーの解決方法 jarfile XXX.jarにアクセスできません。
-
Spring BootのテストメソッドFailed to load ApplicationContextの問題を解決する
-
マスキング このリソースにアクセスするには、完全な認証が必要です。
-
spring-boot 401 このリソースにアクセスするには完全な認証が必要です エラー解決
-
Eclipse起動エラー:javaは起動したが、終了コード=1を返した(ネット上の様々な落とし穴)
-
[オリジナル】java学習ノート【II】よくあるエラー クラスパス上のクラスファイルが見つからない、またはアクセスできない場合
-
org.glassfish.jersey.servlet.ServletContainer
-
起動時にEclipseエラーが発生しました。起動中に内部エラーが発生しました。java.lang.NullPoin: "Javaツーリングの初期化 "中に内部エラーが発生しました。