Android 通过字符串资源名获取资源id
时间: 2023-10-01 17:11:52 浏览: 71
在 Android 中,我们可以通过字符串资源名获取资源id,具体步骤如下:
1. 定义一个字符串变量存储要获取的资源名:
```java
String resName = "my_string_resource";
```
2. 获取 Resources 对象:
```java
Resources res = getResources();
```
3. 获取应用包名:
```java
String packageName = getPackageName();
```
4. 使用 getIdentifier() 方法获取资源id:
```java
int resId = res.getIdentifier(resName, "string", packageName);
```
其中,第一个参数是资源名,第二个参数是资源类型(例如 "string" 表示字符串类型),第三个参数是应用程序包名。
5. 检查获取到的资源id是否为0,如果为0说明资源不存在,否则说明资源存在:
```java
if (resId != 0) {
// 资源存在,可以使用 res.getString(resId) 获取资源字符串值
} else {
// 资源不存在
}
```
相关问题
Android 通过字符串资源名获取raw资源id
可以通过如下代码实现:
```java
String resourceName = "your_resource_name";
int resourceId = getResources().getIdentifier(resourceName, "raw", getPackageName());
```
其中,`your_resource_name` 是你要获取的资源名称,注意不要包含文件后缀名。`raw` 表示要获取的资源类型,这里是 raw 类型的资源。`getPackageName()` 获取当前应用程序的包名。
如果找到了对应的资源,则 `resourceId` 就是该资源的 id。如果找不到,则 `resourceId` 为 0。
Android:资源 id 及资源 id 的动态获取
在 Android 开发中,资源 id 是一个整数值,用于标识应用程序中的资源,例如布局文件、字符串、图片等。每个资源在编译时都会被分配一个唯一的资源 id,这个 id 可以在代码中使用。
获取资源 id 的方式有两种:静态获取和动态获取。
1. 静态获取
在代码中使用 R 类来静态获取资源 id,例如:
```
int layoutId = R.layout.activity_main;
int stringId = R.string.app_name;
int imageId = R.drawable.ic_launcher;
```
2. 动态获取
动态获取资源 id 是指在运行时根据资源名称获取资源 id,通常用于需要根据用户输入或其它条件来加载不同资源的情况。以下是动态获取资源 id 的示例代码:
```
String resourceName = "ic_launcher";
int resourceId = getResources().getIdentifier(resourceName, "drawable", getPackageName());
```
其中,第一个参数是资源名称,第二个参数是资源类型(例如:drawable、string、layout 等),第三个参数是应用程序的包名。
需要注意的是,动态获取资源 id 的效率较低,建议在需要频繁获取资源时使用静态获取方式。