Android 如何引用com.android.internal.R目錄下的資源
項目需求
有一個資源跟系統上的一個資源相同,想要引用它:frameworks/base/core/res/res/drawable/ic_text_dot.xml
文件名稱:ic_text_dot.xml
文件的具體內容:
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2014 The Android Open Source Project
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:inset="10dp">
<shape android:shape="oval">
<solid android:color="?android:attr/textColorSecondary" />
<size android:width="4dp" android:height="4dp" />
</shape>
</inset>
該資源在代碼中的引用是:com.android.internal.R.drawable.ic_text_dot
遇到的問題
但是不知道為什么,我在項目中用Java代碼調用這個資源的時候,一直提示失敗,無法找到目標:
ImageView imageView = (ImageView) findViewById(R.id.img);
imageView.setImageDrawable(getDrawable(com.android.internal.R.drawable.ic_text_dot));
//com.android.internal.R cannot be resolved to a variable
出現問題的原因
You cannot access id's of com.android.internal.R at compile time, but you can access the defined internal resources at runtime and get the resource by name.
解決的辦法是:
ImageView imageView = (ImageView) findViewById(R.id.img);
imageView.setImageResource(Resources.getSystem().getIdentifier("ic_text_dot", "drawable", "android"));
參考:http://stackoverflow.com/questions/3486819/how-to-resolve-the-error-com-android-internal-r-cannot-be-resolved-when-i-usin
