片段中的getColor

时间:2018-07-23 14:33:00

标签: android kotlin

我知道,不建议使用getColor,我们可以通过以下方式对其进行修复:

ContextCompat.getColor(context, R.color.your_color);

但是在“片段”中我得到了以下信息:所需的上下文已找到上下文?

那么如何避免这种情况呢?

5 个答案:

答案 0 :(得分:0)

使用getActivity()。getResource()。getColor(R.color.youColor)

答案 1 :(得分:0)

将容器Activity的上下文传递到ContextCompat方法中。

ContextCompat.getColor(getActivity(), R.color.your_color);

答案 2 :(得分:0)

编写以下代码:

context?.let { ContextCompat.getColor(it, R.color.colorWhite) }

实际上,您正在传递类型为context的{​​{1}}。但是您必须通过类型Context?。为此,您必须检查Context不应为null。

因此,使用context函数。如果let不为null,则将执行let块中的代码。

答案 3 :(得分:0)

getActivity()的上下文可以为null,因此您应该执行以下操作:

在您的片段中

    private Context context;

        @Override
        public void onAttach(Context context) {
            super.onAttach(context);
             this.context = context;
        }

getColor

ContextCompat.getColor(context, R.color.your_color);

答案 4 :(得分:0)

这样使用

set1.fillColor= ContextCompat.getColor(requireActivity(), R.color.chart_fill)

我用 ContextCompatrequireActivity() 代替 getActivity()