MResource

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;
	}
}

setContentView(MResource.getIdByName(getApplication(), "layout", "layout_main"));

时间: 2024-11-06 07:32:50

MResource的相关文章

开源项目:RoundedImageView

RoundedImageView,顾名思义,就是“圆形的ImageView”.RoundedImageView是基于Android官方的RoundedBitmapDrawable对ImageView进行的扩展,支持显示圆形,圆角图片.与Github上的众多CircleImageView项目比较,RoundedImageView实现细节相对简单,操作方便. 安装方法  在Android Studio中,以导入Module的方式添加RoundedImageView依赖(jCenter Remote

Android开发 |常见的内存泄漏问题及解决办法

在Android开发中,内存泄漏是比较常见的问题,有过一些Android编程经历的童鞋应该都遇到过,但为什么会出现内存泄漏呢?内存泄漏又有什么影响呢? 在Android程序开发中,当一个对象已经不需要再使用了,本该被回收时,而另外一个正在使用的对象持有它的引用从而导致它不能被回收,这就导致本该被回收的对象不能被回收而停留在堆内存中,内存泄漏就产生了. 内存泄漏有什么影响呢?它是造成应用程序OOM的主要原因之一.由于Android系统为每个应用程序分配的内存有限,当一个应用中产生的内存泄漏比较多时

Android常见内存泄露

前言 对于内存泄漏,我想大家在开发中肯定都遇到过,只不过内存泄漏对我们来说并不是可见的,因为它是在堆中活动,而要想检测程序中是否有内存泄漏的产生,通常我们可以借助LeakCanary.MAT等工具来检测应用程序是否存在内存泄漏,MAT是一款强大的内存分析工具,功能繁多而复杂,而LeakCanary则是由Square开源的一款轻量第三方内存泄漏检测工具,当它检测到程序中有内存泄漏的产生时,它将以最直观的方式告诉我们该内存泄漏是由谁产生的和该内存泄漏导致谁泄漏了而不能回收,供我们复查. 内存泄漏 为

Android内存泄漏的本质原因、解决办法、操作实例

今年最后一个迭代终于结束了,把过程中碰到的不熟悉的东西拉出来学习总结一下 内存泄漏的本质是:[一个(巨大的)短生命周期对象的引用被一个长生命周期(异步生命周期)的对象持有] 这个东西分为两个部分 获得一个(巨大的)短生命周期的对象 这个[巨大的短生命周期的对象]在Android中最有可能的就是[Activity]了 最容易无意识获得它的方式就是[非静态内部类隐式自动持有外部类的强引用] 把这个对象赋值给了一个长生命周期的对象 这个有一些常见的套路 套路一:直接赋值给了一个类的静态成员 这个静态成

Android插件化(三)加载插件apk中的Resource资源

Android加载插件apk中的Resource资源 简介 如何加载未安装apk中的资源文件呢?我们从android.content.res.AssetManager.java的源码中发现,它有一个私有方法addAssetPath,只需要将apk的路径作为参数传入,我们就可以获得对应的AssetsManager对象,然后我们就可以使用AssetsManager对象,创建一个Resources对象,然后就可以从Resource对象中访问apk中的资源了.总结如下: 1.新建一个AssetManag

关于ArrayAdapter中的getView函数

我曾想利用ArrayAdapter中的getView来获取ListView中每个item的View对象.结果是,无论我怎么对View对象进行更改都不产生影响.不会变是理所当然的,因为getView,其实是"createView".下面是我参考的源代码:  public View getView(int position, View convertView, ViewGroup parent) {         return createViewFromResource(positio

多线程:简易版本生产消费者模式纯语言概述

一个消费者,一个生产者,一共就两个线程 首先用最简单的语言描述一下这个模型对象为 资源对象,资源对象包括了生产方法,和消费方法,以及计数器生产者对象,只会生产消费者对象,只会销售生产者.消费者实现了Runnable接口,同时拥有一个资源字段和为资源字段构造函数主函数New了一个资源对象New了一个生产者,消费者分别放入一个Thread中执行,结果很可能生产者执行一半,消费者就来执行了,为了避免这种情况为共享数据部分加入Synchronized关键字,进行同步处理但是还有一个问题,生产者,消费者,

Listview详解

Listview应该是最为常见的控件.对于大多数规则排列的界面,几乎都可以用ListView进行编写.对于单一界面来说,ListView既是最难的控件,又是使用最为频繁的控件.ListView 通常用于展示大量的数据,比如读取数据库中的数据.ListView优势也较为明显,比如显示大量数据时节约内存,自带ScrollView 的功能可以实现界面滚动等.ListView 控件的设计正好遵循MVC 设计模式.mode 数据数据模型,在ListView中具体可以指要显示到ListView 上的数据集合

.NET Core的文件系统[4]:由EmbeddedFileProvider构建的内嵌(资源)文件系统

一个物理文件可以直接作为资源内嵌到编译生成的程序集中.借助于EmbeddedFileProvider,我们可以统一的编程方式来读取内嵌于某个程序集中的资源文件,不过在这之前我们必须知道如何将一个项目文件作为资源并嵌入到生成的程序集中. [ 本文已经同步到<ASP.NET Core框架揭秘>之中] 目录一.将项目文件变成内嵌资源二.读取资源文件三.EmbededFileProvider 一.将项目文件变成内嵌资源 在默认情况下,我们添加到一个.NET项目中的静态文件并不会成为项目编译生成的程序集