Как я могу вызвать контекст во фрагменте для DrawableCompat.setTint с помощью kotlin?

#android #kotlin #fragment

#Android #котлин #фрагмент

Вопрос:

Я хочу изменить цвет кнопки во фрагменте, управляя другой кнопкой в MainActivity.

Код для фрагмента :

 lass build_8p : Fragment() {
var brush_chosen = 1
override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val brush_color = arguments?.getString("brush")
    ib0.setOnClickListener {
        if (brush_chosen==1)
        {
            //val con = this.context
            DrawableCompat.setTint(ib0.drawable, ContextCompat.getColor(this.context,R.color.rndcolor1))
        }
    }
    }


override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    // Inflate the layout for this fragment
    return inflater.inflate(R.layout.fragment_build_8p, container, false)
}
  

Переменная brush_chosen будет взята из MainActivity .

Здесь я хочу знать, как ввести правильный ввод для DrawableCompat.setTint(ib0.drawable, ContextCompat.getColor(this.context,R.color.rndcolor1)) }

Поскольку эта строка не работает.

Пожалуйста, скажите мне, как и большое вам спасибо.

Комментарии:

1. В чем именно ошибка? Что не найдено?

Ответ №1:

Вы можете просто использовать requireContext():

 DrawableCompat.setTint(ib0.drawable, ContextCompat.getColor(requireContext(),R.color.rndcolor1))
  

Ответ №2:

Чтобы использовать контекст фрагмента :

 DrawableCompat.setTint(ib0.drawable, ContextCompat.getColor(requireContext(),R.color.rndcolor1))
  

Чтобы использовать контекст действия :

 DrawableCompat.setTint(ib0.drawable, ContextCompat.getColor(requireActivity(),R.color.rndcolor1))
  

оба должны работать в вашем случае