Как использовать привязку данных с фрагментом

Они разные потоки и сбрасываются в разное время.

Если вы положите

System.out.flush();
System.err.flush();

внутри своего цикла, он будет работать как ожидалось.

Чтобы уточнить, выходные потоки кэшируются, поэтому вся запись поступает в этот буфер памяти. После периода молчания они фактически выписываются.

Вы пишете два буфера, затем после периода бездействия оба они покраснели (один за другим).

148
задан dark_ruby 10 January 2016 в 14:36
поделиться

1 ответ

Очень полезный блог о Привязке данных: https://link.medium.com/HQY2VizKO1

class FragmentBinding<out T : ViewDataBinding>(
    @LayoutRes private val resId: Int
) : ReadOnlyProperty<Fragment, T> {

    private var binding: T? = null

    override operator fun getValue(
        thisRef: Fragment,
        property: KProperty<*>
    ): T = binding ?: createBinding(thisRef).also { binding = it }

    private fun createBinding(
        activity: Fragment
    ): T = DataBindingUtil.inflate(LayoutInflater.from(activity.context),resId,null,true)
}

Объявляют привязку val как это во Фрагменте:

private val binding by FragmentBinding<FragmentLoginBinding>(R.layout.fragment_login)

не забывают писать это во фрагменте

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    return binding.root
}
0
ответ дан 23 November 2019 в 21:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: