一共有两种
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");