Вид макета не инициализируется с помощью Butterknife

В следующем коде:

class LobbyFragment : Fragment() {

    @Inject
    lateinit var lobbyFragmentHelloService: LobbyFragmentHelloService

    @BindView(R.id.lobby_fragment_hello)
    lateinit var lobbyFragmentHelloTextView: TextView

    lateinit var unbinder: Unbinder

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        val view = inflater.inflate(R.layout.lobby_fragment, container, false)
        unbinder = ButterKnife.bind(this, view)
        return view
    }

    override fun onViewCreated(view: View?, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        sayFragmentHello()
    }

    override fun onAttach(context: Context?) {
        AndroidInjection.inject(this)
        super.onAttach(context)
    }

    override fun onDestroyView() {
        super.onDestroyView()
        unbinder.unbind()
    }

    private fun sayFragmentHello() {
        lobbyFragmentHelloTextView.text = lobbyFragmentHelloService.sayHello()
    }
}

лоббиFragmentHelloTextView никогда не инициализируется. Butterknife используется для инициализации этой переменной. Почему не инициализируется к моменту вызова sayFramentHello?


person AndroidDev    schedule 30.04.2019    source источник
comment
Скорее всего, вам не хватает apply plugin: 'kotlin-kapt'.   -  person EpicPandaForce    schedule 30.04.2019
comment
Нет. Это явно проблема ножа для масла. Я удалил его. Масляный нож бесполезен в Котлине.   -  person AndroidDev    schedule 30.04.2019
comment
Какой была ваша версия ButterKnife?   -  person EpicPandaForce    schedule 30.04.2019


Ответы (1)


Я не совсем уверен, что пошло не так, но чтобы решить эту проблему, вы можете рассмотреть возможность использования kotlin, встроенного в синтетическую привязку, и просто избавиться от Butterknife. Это более эффективно.

объяснено здесь

person elbert rivas    schedule 30.04.2019
comment
Я сделал это незадолго до того, как вы опубликовали свой ответ, и это решило проблему. Честно говоря, я взял этот код из примера приложения. Это только подтверждает мое мнение о том, что разработчики стали настолько зависимы от нелепых сторонних библиотек, таких как Butterknife, что в конечном итоге на исправление проблем уходят часы. - person AndroidDev; 30.04.2019