ホームページ >Java >&#&チュートリアル >Android リソース ID とそれに対応する文字列を取得するにはどうすればよいですか?
リソース ID をメソッドに渡す必要がありますが、対応する文字列リソース。たとえば、R.drawable.icon があり、整数 ID と文字列 "icon" の両方が必要だとします。
Using Resources.getIdentifier()
解決策の 1 つは、Resources クラスの getIdentifier() メソッドを使用することです。このメソッドは、文字列リソース名とリソース タイプ (drawable など) を引数として受け取り、関連付けられた整数 ID を返します。
// Get the integer ID for the icon int id = resources.getIdentifier("icon", "drawable", getPackageName()); // Retrieve the string resource String stringResource = resources.getString(id);
リフレクションの使用
別のオプションリフレクションを使用してリソース ID フィールドに直接アクセスすることです。このソリューションは、コード/リソースの圧縮が有効になっているリリース ビルドでは機能しない可能性があることに注意してください。
// Get the R.drawable class Class<?> clazz = R.drawable.class; // Get the field for the icon resource Field idField = clazz.getDeclaredField("icon"); // Get the integer ID int id = idField.getInt(null); // Retrieve the string resource String stringResource = resources.getString(id);
両方のアプローチの組み合わせ
柔軟性を最大限に高めるために、両方のアプローチを組み合わせることができます。 。文字列リソース名をメソッドに渡し、メソッド内で優先手法 (リフレクションまたは getIdentifier()) を使用して ID と文字列を取得します。
// Method that accepts the string resource name public void processResource(String resourceName) { // Get the R.drawable class Class<?> clazz = R.drawable.class; try { // Try using reflection to get the ID Field idField = clazz.getDeclaredField(resourceName); int id = idField.getInt(null); // Retrieve the string resource String stringResource = resources.getString(id); } catch (Exception e) { // Fallback to using getIdentifier() int id = resources.getIdentifier(resourceName, "drawable", getPackageName()); String stringResource = resources.getString(id); } // Use the ID and string as needed in your method ... }
以上がAndroid リソース ID とそれに対応する文字列を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。