ホームページ > Java > &#&チュートリアル > 文字列名から Android リソース ID を効率的に取得する方法

文字列名から Android リソース ID を効率的に取得する方法

DDD
リリース: 2024-12-20 09:31:09
オリジナル
563 人が閲覧しました

How to Efficiently Get an Android Resource ID from its String Name?

Android で文字列からリソース ID を取得する

リソース ID をメソッドに渡すとき、多くの場合、ID と対応する文字列の両方にアクセスすることが望ましいです。たとえば、「アイコン」リソースについて考えてみましょう。

R.drawable.icon
ログイン後にコピー

ID と文字列「アイコン」の両方を取得するには、いくつかのアプローチを検討できます。

1 つの解決策には、リソースの利用が含まれます。 getIdentifier() メソッド:

int resID = getResources().getIdentifier("icon", "drawable", getPackageName());
String iconString = "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;
    } 
}
ログイン後にコピー

このメソッドを「アイコン」リソースに利用するには:

int resID = getResId("icon", R.drawable.class); // or other resource class
String iconString = "icon";
ログイン後にコピー

ただしこの反射アプローチはより効率的である可能性がありますが、潜在的な欠点に注意することが重要です。コード/リソースの圧縮が有効になっているリリース ビルドでは、この解決策は失敗する可能性があります。さらに、文字列名が予期されるリソース名の形式と異なる場合には機能しない可能性があります。

以上が文字列名から Android リソース ID を効率的に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート