我一直在尝试使用自定义颜色设置按钮和其他项目。我是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);
答案 0 :(得分:1)
阅读答案以理解上下文getter方法here之间的区别。
当它返回getBaseContext()
时,可能会导致异常,您调用null
,因此空指针例如。当想要使用活动的上下文(在活动类内)时,您可以传递this
(或YourActivityClass.this
,其中YourActivityClass始终是您活动的名称) Context
论点。所以具有异常的行应该是这样的:
int buttonBackground = ContextCompat.getColor(this, R.color.buttonBackgrounds);