Android 在片段中设置滤色器 activity

Android set color filter in fragment activity

所以我试图设置片段 activity 内的 ImageViewcolorFilter。我可以点击按钮,它按预期工作,除非我尝试设置 colorFilter 它崩溃并说:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setColorFilter(int, android.graphics.PorterDuff$Mode)' on a null object reference

如果我已经点击它并且它正在工作,它怎么会是空的?我如何解决它?这是我的 onCreateView:

myButton = (ImageView) view.findViewById(R.id.mybutton);
myButton.setOnClickListener(this);

// testing
myButton.getBackground().setColorFilter(Color.GRAY, PorterDuff.Mode.MULTIPLY);

** 回答 ** 正如我指出的那样,我的解决方案是使用 app:srcCompat="@drawable 来设置我的 imageView 而不是背景。所以我只是删除了 .getBackground。这是我的解决方案:

myButton.setColorFilter(ContextCompat.getColor(context, R.color.Gray), android.graphics.PorterDuff.Mode.MULTIPLY);

这是因为您的 getBackground 给出的是 null。 你有一个图像视图。可能是您在 xml 中设置了它的 "src" 而不是 "background"。 如果您想继续使用相同的方法,请在 xml.

中设置背景

谢谢