I am building app for android tv but having issue on manually selecting main fragment. I want click on header item to change main fragment rather than changing on focus using fragment factory.
Code
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
isHeadersTransitionOnBackEnabled = true
val listRowPresenter = ListRowPresenter(FocusHighlight.ZOOM_FACTOR_SMALL)
mRowsAdapter = ArrayObjectAdapter(listRowPresenter)
adapter = mRowsAdapter
mainFragmentRegistry.registerFragment(PageRow::class.java, PageRowFragmentFactory())
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
loadData()
headersSupportFragment.setOnHeaderViewSelectedListener { viewHolder, row ->
//Only Focus View. Don't change main fragment
}
headersSupportFragment.setOnHeaderClickedListener { viewHolder, row ->
//Change main fragment here
//No documentation provided what to write here
}
}
fun loadData() {
val headerItem1 = HeaderItem(1, "HEADER_NAME_1")
val pageRow1 = PageRow(headerItem1)
mRowsAdapter.add(pageRow1)
val headerItem2 = HeaderItem(2, "HEADER_NAME_2")
val pageRow2 = PageRow(headerItem2)
mRowsAdapter.add(pageRow2)
}
Factory
private class PageRowFragmentFactory : BrowseSupportFragment.FragmentFactory<Fragment>() {
override fun createFragment(rowObj: Any?): Fragment {
val row = rowObj as Row
return when (row.headerItem.id) {
1L -> SampleFragmentA()
2L -> SampleFragmentB()
else -> throw IllegalArgumentException(String.format("Invalid row %s", rowObj))
}
}
}
from BrowseSupportFragment(Leanback): manually select mainfragment
No comments:
Post a Comment