Android比较ConstantState不适用于4.4 KitKat

时间:2017-06-23 13:37:03

标签: android android-drawable android-4.4-kitkat

我开发了一个应用程序,一切都在我的s7和其他设备上运行良好,但我在运行4.4 kitkat的旧版本上进行了测试,当应用程序比较按钮时颜色,在4.4中,它不起作用。

这是我正在使用的代码:

for (Button btn : selectorArrayList) {

        final Button button = btn;

        btn.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                /*

                    Check if button color is white or red
                    if white, turn red and activate the
                    selector (category) and if it's red
                    turn white and deactivate the selector
                    category)

                 */

                // I've set the background in the XML Layout as R.color.white

                Drawable pd = (Drawable) button.getBackground();

                if (pd.getConstantState().equals(ContextCompat.getDrawable(getContext(), R.color.white).getConstantState())) {

                ...

在这个操作系统的新版本上,它决定了状态是平等的,而在4.4(未尝试过其他版本)它们不是。

有人知道我在这里做错了什么吗?谢谢。

1 个答案:

答案 0 :(得分:0)

试试这个,应该有效:

  if (pd.getConstantState().equals(new ColorDrawable(R.color.white).getConstantState()))