Вид макета не инициализируется с помощью Butterknife - PullRequest
0 голосов
/ 30 апреля 2019

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

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()
    }
}

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

1 Ответ

2 голосов
/ 30 апреля 2019

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

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

...