Android:ContextCompat.getColor(context,R.color.my_color),无法解析“getColor”

时间:2016-01-11 07:39:50

标签: android android-studio android-6.0-marshmallow

我知道这里有几个类似的问题,但是没有一个解决方案适合我。

我刚将我的应用程序从Ecilpse(juno)转移到Android Studio 1.5.1;从API 19到API 23(compileSdkVersion)。

目前我遇到了这样的错误,即“getResources()。getColor(R.color.my_color)”已折旧且无法使用。

在线搜索后,我尝试使用“ContextCompat.getColor(context,R.color.my_color)”代替。错误在于“getColor”部分,因为它表示它无法解决:

enter image description here

“ContextCompat”方法允许我使用“getDrawable”,“getExternalCacheDirs”,“getExternalFilesDirs”和“getObbDirs”; 除了“getColor”

我还确保在我的app build.gradle(在依赖项{}下)中有这两个:

  • 编译'com.android.support:appcompat-v7:23.1.1'
  • 编译'com.android.support:support-v4:23.1.1'

以下是此类的导入(DetailsActivity): enter image description here

此外,我还尝试使用“ContextCompat”以外的“ResourcesCompat”;它仍然不适合我。

我仍然是Android Development的初学者,从事学校项目。 任何人都可以提供一些关于我做错的建议,并指出我正确的方向?非常感谢提前!

3 个答案:

答案 0 :(得分:3)

您可以使用此方法。

这是支持库中的ContextCompat Developer Link

public static final int getColor(Context context, int id) {
    final int version = Build.VERSION.SDK_INT;
    if (version >= 23) {
        return ContextCompat.getColor(context, id);
    } else { 
        return context.getResources().getColor(id);
    } 
} 

答案 1 :(得分:1)

如果您使用大于24的API级别进行编译,则不必在那里使用ContextCompat,因为这只是早期版本的兼容性功能。您还可以使用Context.getColor()但请注意方法签名!如果您只想在默认主题中使用颜色,则只需提供其引用的int值:http://developer.android.com/reference/android/content/Context.html#getColor(int)

您目前正在尝试使用两个参数(颜色和主题)访问getColor(),这两个参数无法在那里工作,因为没有方法支持这些参数。如果删除第二个参数,则当前解决方案将起作用。 但是直接使用Context或Resources会更方便,如果你不需要,可以删除v4 Appcompat引用。

答案 2 :(得分:1)

在使用此方法之前,首先在build.gradle脚本中添加Dependencies。具体如下:

import numpy as np
import cv2
from matplotlib import pyplot as plt

img = cv2.imread('messi.jpg',0)

dft = cv2.dft(np.float32(img),flags = cv2.DFT_COMPLEX_OUTPUT)
dft_shift = np.fft.fftshift(dft)

magnitude_spectrum = np.log(cv2.magnitude(dft_shift[:,:,0],dft_shift[:,:,1]))

plt.subplot(131),plt.imshow(img, cmap = 'gray')
plt.title('Input Image'), plt.xticks([]), plt.yticks([])
plt.subplot(132),plt.imshow(magnitude_spectrum, cmap = 'gray'), plt.colorbar(cmap = 'gray')
plt.title('Magnitude Spectrum'), plt.xticks([]), plt.yticks([])
plt.show()