反射android R文件

动态取得R文件的int值

[1].[代码] [Java]代码 跳至 [1]

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

//通过string-array
name属性动态获取R.array.xxx的int值

public

CharSequence[] getListData(String name) {

        try

{

            Class<?>
arrayClass = getArrayResource().getClass();

            Field
intField = arrayClass.getField(name);

            int

sourceId = intField.getInt(name);

            return

getResources().getTextArray(sourceId);

        }
catch

(Exception e) {

            e.printStackTrace();

        }

        return

null
;

    }

private

Object arrayResource =
null;

private

Object getArrayResource() {

        if

(arrayResource ==
null)
{

            Class<?>
resource = R.
class;

            try

{

                Class<?>[]
classes = resource.getClasses();

                for

(Class<?> c : classes) {

                    int

i = c.getModifiers();

                    String
className = c.getName();

                    String
s = Modifier.toString(i);

                    if

(s.contains(
"static")
&& className.contains(
"array"))
{

                        return

c.getConstructor().newInstance();

                    }
else

{

                        continue;

                    }

                }

            }
catch

(Exception e) {

                e.printStackTrace();

            }

        }

        return

arrayResource;

    }

时间: 2024-12-28 09:08:19

反射android R文件的相关文章

android R文件不在自动生成资源id

关于android R文件不在自动生成资源id的问题解决: 1.设置eclipse->project->build automatically 2.上述没有解决的话 project->clear

Android R文件丢失生成失败

Android开发过程中,碰到R cannot be resolved to a variable的报错信息,从网上搜了一堆,发现都不管用如下:最后解决了,在此做个记录,网上总结的如下: 1. 检查Android 的SDK是否丢失需要重新下载,检查build path 2.确保class没有import Android.R: 3,错误class引用的layout的xml文件没有错误 4.检查AndroidManifest.xml文件,里边的package,layout配置文件,strings.x

Android R文件存在但引用报错

昨天晚上仅仅修改了主Activity对应的layout文件的几行代码,增加了一个LinearLayout,结果回来Actitity里面引用的所有R文件资源都报错,gen下的R和资源文件自身都没有问题.只是提示:对应的资源名称或字段无法找到.来来回回搞了一个多小时,把代码恢复又修改了好几遍,不断的clean,错误仍然存在,即使删除了gen下的文件重新生成也无济于事.无奈只能睡觉了. 今早看了一篇文章报同样的错,他是因为重新导入代码包,忘了修改Menifest下的package name字段所致,我

Android R文件相关问题

今天遇到的问题,gen下没有自动生成文件,而大部分java文件中错误是找不到R.java.“R cannot be resolved to a variable” 这就一定有别的原因造成错误,所以才不能成功编译.我查看了所有的xml文件,没有错误.再回过头来挨个java文件找,看看是否有别的错误.果然,在某个类中使用了BuildConfig来做调试开关.private static volatile boolean isDebugEnabled = BuildConfig.DEBUG; 但imp

Android gen根目录下自动生成的R文件指向问题

今天才弄明白,原来在调用vitamio包的时候使用它们的R文件,然后在迁入广告的时候出现了问题,但是瞎胡搞半天后把问题解决了,可没有明白这是什么原因. 今天更新应用又出现了相同的情况,无意中打开了gen的根目录妈蛋!发现里面的报名根本就不是我现在应用的包名.而是调用的那个工程的包名!这下终于找到根本原因了,但是怎么解决呢???----------->修改包名呗~~~~~~~可是你改了它又会自动生成了原来的那个,--------------后来终于发现原来这个R文件的包名适合manifest文件中

关于android R.java文件无法创建的问题

R.java文件无法创建的原因网上有很多说法普遍是以下两种: 1. xml文件有错误: 解决方法就是找到哪个xml有错然后把错误修复就OK了. 2.编码问题 这时候只要把xml文件的编码改成utf8就能解决问题. 然而对于查找xml文件错误我们常常依赖android的自带工具进行检测,但是只要是人写得程序必然会有一些bug, 当检测工具出现bug后有可能导致错误很难定位. 而在xml文件校验方面,里面就有一个很坑的bug: 当menu目录下的文件有错时导致r文件无法生成时,可能不会给出任何有关m

Android Studio 找不到R文件解决方法汇总

一.新建的Activity中R文件找不到,其他文件中的R文件可以正常使用. 解决方法: 在该Activity中引入R包即可:import com.example.zcj.password.R; 在子目录下新建Activity文件都会出现这个问题,可以通过设置自动导入包:File-Settings-Editor-General-Auto Import,将Optimize imports on the fly和Add unambiguous imports on the fly勾选即可. 二.新导入

android导入项目出现R文件不能生成

关于原因网上有好多,比如 1.有时候eclipse不自动编译,把project clean一下,让R.java重新生成 2.选择菜单  Project >> Clean ,前提是勾选上 Bulid Automatically(自动构建部署) , 点Clean后会重新构建项目,因为一般情况下,R.java文件在这个时候会重新更新生成一边,如果工程有错,就不会自动生成. 3.选择工程,右键 Android Tools >> Fix Project Properties 这个操作有时候可

Android开发之R文件丢失

在进行android开发的过程中,不知道怎么回事,代码中出现R代码有红色波浪线了,于是进行了clean,结果还是有红色波浪线,然后就重启了eclipse,重启以后还是这个样子,随后发现工程的R文件丢失了.我擦....什么情况??? 然后google了一番,各种方法,现贴出来 1.选择eclipse/myeclipse 的 clean  这样R文件也会出现.  该方法不管用 2.对着工程点击鼠标右键 选择 Build Project,R.java 文件又回来    该方法不管用 3. 从别的工程中