通过资源名称得到资源id

简介: demo地址 主要应用类 package com.example.activitylibrary;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.


demo地址


主要应用类

package com.example.activitylibrary;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class LibraryActivity extends Activity {
	String msg = "我是来自Jar中的Activity";

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(MResource.getIdByName(getApplication(), "layout", "activity_main"));
		
		TextView mTextView = (TextView) findViewById(MResource.getIdByName(getApplication(), "id", "textView1"));
		mTextView.setText(msg);
		
		Button mButton = (Button) findViewById(MResource.getIdByName(getApplication(), "id", "button1"));
		
		mButton.setText(msg);
		mButton.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Toast.makeText(getApplication(), msg, Toast.LENGTH_SHORT).show();
			}
		});
	}


}
具体工具类

package com.example.activitylibrary;

import android.content.Context;

/**
 * 根据资源的名字获取其ID值
 * @author
 *
 */
public class MResource {
	public static int getIdByName(Context context, String className, String name) {
		String packageName = context.getPackageName();
		Class r = null;
		int id = 0;
		try {
			r = Class.forName(packageName + ".R");

			Class[] classes = r.getClasses();
			Class desireClass = null;

			for (int i = 0; i < classes.length; ++i) {
				if (classes[i].getName().split("\\$")[1].equals(className)) {
					desireClass = classes[i];
					break;
				}
			}

			if (desireClass != null)
				id = desireClass.getField(name).getInt(desireClass);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (IllegalArgumentException e) {
			e.printStackTrace();
		} catch (SecurityException e) {
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (NoSuchFieldException e) {
			e.printStackTrace();
		}

		return id;
	}
}







目录
相关文章
|
7月前
|
持续交付 数据安全/隐私保护
ROS伪参数教程:通过ALIYUN::ResourceGroupId配置栈内资源的资源组
阿里云资源编排服务(ROS)的新伪参数 ALIYUN::ResourceGroupId 提供了一种简化资源组管理的机制。此参数让用户在编写资源栈模板时能够直接指定资源应该属于的资源组,无需事先知晓资源组ID。这项功能简化了自动化部署过程中的管理流程,提高了部署的准确性,并增强了模板的可复用性。利用此伪参数,可以实现资源更精确的分区管理和访问控制,提升资源部署与整合的效率。
ROS伪参数教程:通过ALIYUN::ResourceGroupId配置栈内资源的资源组
|
7月前
|
JSON 数据中心 数据格式
Terraform 系列 - 批量创建资源时如何根据某个字段判断是否创建
Terraform 系列 - 批量创建资源时如何根据某个字段判断是否创建
|
SQL 监控 安全
OpenWAF配置本地资源访问
OpenWAF配置本地资源访问
|
弹性计算 固态存储 网络安全
使用Count功能批量创建资源
本场景将以批量创建ECS实例和EIP,并为ECS实例绑定EIP为例,为您介绍如何使用Count功能。
|
C++
新建项无资源字典类型
新建项无资源字典类型
127 0
新建项无资源字典类型
|
JavaScript
给类的每个实例分配唯一id
给类的每个实例分配唯一id
171 0
|
Kubernetes 网络性能优化 容器
k8s 【资源管理】2--LimitRange为命名空间配置默认的内存请求和限制
k8s 【资源管理】2--LimitRange为命名空间配置默认的内存请求和限制
|
弹性计算 负载均衡 NoSQL
使用创建者标签对云上资源进行管理
简介: 如果您需要根据资源创建者来对资源进行管理、分权和分账等操作,那么创建者标签可以帮助您简单、快速地实现您的需求。
679 0
使用创建者标签对云上资源进行管理
|
弹性计算 运维 监控
基于标签(TAG)批量管理资源
如何基于标签实现批量管理资源的实践?比如:基于标签中指定环境(key=env)为预发(value=pre)加应用名称(key=appname, value=alipay)的资源来批量启动;批量安装插件;批量启动机器;批量更换操作系统;批量升级带宽;批量删除资源等等。
2286 0
基于标签(TAG)批量管理资源
|
机器学习/深度学习 算法 安全