Android でのリソース ID と文字列の取得
Android 開発では、リソース ID とリソースに関連付けられた文字列値の両方を取得できます。共通の要件です。次の例を考えてみましょう:
R.drawable.icon
この参照は、「icon」という名前のドローアブル リソースを示します。 ID と文字列表現の両方をメソッドに渡すには、いくつかのオプションがあります。
Resources.getIdentifier() の使用
Resources.getIdentifier() メソッドを使用すると、次のことが可能になります。指定された文字列のリソース ID を取得します。文字列、必要なリソース タイプ (ドローアブルなど)、およびパッケージ名をパラメーターとして渡します。
int resId = getResources().getIdentifier("icon", "drawable", getPackageName());
これにより、「アイコン」ドローアブルの ID が取得されます。ただし、getString() を使用して文字列値を手動で取得する必要があります。
Java リフレクションの使用
もう 1 つの方法は、Java リフレクションを使用してリソース ID を取得し、文字列値を直接。ただし、このメソッドは、コード/リソースの圧縮が有効になっている場合、またはリソース名がフィールド名と一致しない場合 (文字列リソースなど) など、一部のシナリオでは失敗する可能性があります。
try { Field idField = R.drawable.class.getDeclaredField("icon"); int resId = idField.getInt(null); String resString = getResources().getString(resId); } catch (NoSuchFieldException | IllegalAccessException e) { e.printStackTrace(); }
ハイブリッド アプローチ
ハイブリッド アプローチは、両方の長所を提供できます。文字列値をメソッドに渡し、内部で getIdentifier() を使用してリソース ID を取得します。これにより、メソッドは ID と文字列値の両方へのアクセスを許可しながら、文字列のみを受信するようになります。
例:
private void processResource(String resourceName) { int resId = getResources().getIdentifier(resourceName, "drawable", getPackageName()); if (resId != 0) { // Do something with the resource ID and string value... } }
最も多くのものを選択することにより、ユースケースに適したソリューションを使用すると、Android 開発でリソース ID と文字列値の両方を効果的に取得して利用できます。
以上がAndroid でリソース ID と文字列値を効率的に取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。