getIdentifier获取资源id

来源:互联网 发布:阿里云备案照片大小 编辑:程序博客网 时间:2024/06/02 06:50

一共有两种

        Log.e("drawable的id", R.drawable.ic_launcher + "");        // 包名 + : + 资源文件夹名 + / +资源名        id = getResources().getIdentifier(                "com.example.androidtest:drawable/ic_launcher", null, null);        Log.e("drawable的id", id + "");        // 第一个参数为ID名,第二个为资源属性是ID或者是Drawable,第三个为包名        id = getResources().getIdentifier("ic_launcher", "drawable",                "com.example.androidtest");        Log.e("drawable的id", id + "");

测试结果如下
这里写图片描述

但是通常情况下这么弄没什么意思,很多时候我们要做的是获取系统的资源id。

比如我们要获取SearchView里面的某个控件。

首先我想到的是反射,但是经过实验发现提示报错no emoty constructor。

也可以用getIdentifier获取了id以后再findViewById,所以我做了测试

        id = mSv.getContext().getResources()                .getIdentifier("android:id/search_src_text", null, null);        Log.e("SearchView中SearchAutoComplete的id", id + "");

结果可以取到这个id
这里写图片描述

然后我们就可以做点文章了

TextView textView = (TextView) mSv.findViewById(id);textView.setText("111111111");
0 0
原创粉丝点击