将上下文传递到getColor,Android Studio

时间:2017-01-27 21:17:05

标签: java android nullpointerexception android-context

我一直在尝试使用自定义颜色设置按钮和其他项目。我是java的新手,我一直在努力学习如何正确使用上下文。我做了一些研究,但仍然无法找到解决方案。

android监视器错误是一个空指针异常,这是它遇到问题的代码行。

int buttonBackground = ContextCompat.getColor(this, R.color.buttonBackgrounds);

我在我的类中声明了这个变量,然后在一个方法中进一步向下,我写了这个:

percussionButton.setBackgroundColor(buttonBackground);
instrumentButton.setBackgroundResource(android.R.drawable.btn_default);

我认为这两者可能存在冲突,但这是我能想到的全部内容。

如果之前已经回答过,我很抱歉,到目前为止,我还没有找到答案。

我之前尝试过的事情:

int buttonBackground = ContextCompat.getColor(getBaseContext(), R.color.buttonBackgrounds);

int buttonBackground = ContextCompat.getColor(getApplicationContext(), R.color.buttonBackgrounds);

1 个答案:

答案 0 :(得分:1)

阅读答案以理解上下文getter方法here之间的区别。
当它返回getBaseContext()时,可能会导致异常,您调用null,因此空指针例如。当想要使用活动的上下文(在活动类内)时,您可以传递this(或YourActivityClass.this,其中YourActivityClass始终是您活动的名称) Context论点。所以具有异常的行应该是这样的:

int buttonBackground = ContextCompat.getColor(this, R.color.buttonBackgrounds);