У меня есть активность и фрагмент. У меня есть две кнопки в действии, и по нажатию обеих кнопок я загружаю один и тот же фрагмент. При втором нажатии кнопки я хочу прокрутить до верхней позиции текстового представления, и фрагмент имеет NestedScrollView
в качестве родителя.
Я использую интерфейс, чтобы различать, какая кнопка была нажата
interface HomeFragmentListener {
fun shouldScrollToCampaign(scroll: Boolean)
}
class MainActivity : AppCompatActivity(),... {
private var homeFragmentListener: HomeFragmentListener? = null
fun setHomeFragmentListener(homeFragmentListener: HomeFragmentListener? ){
this.homeFragmentListener = homeFragmentListener
}
}
Вот мой второй код нажатия кнопки
loadFragment(HomeFragment())
homeFragmentListener?.shouldScrollToCampaign(true)
Загрузка фрагмента выглядит следующим образом
private fun loadFragment(fragment: Fragment?) {
val transaction = supportFragmentManager.beginTransaction()
fragment?.let { transaction.replace(R.id.fl_activity_main, it) }
transaction.commit()
}
Мой фрагмент выглядит следующим образом
class HomeFragment : Fragment(), HomeFragmentListener {
override fun shouldScrollToCampaign(scroll: Boolean) {
if (scroll) {
nestedScrollView {
nsv_fragment_home.scrollTo(
0,
textView.top
)
}
}
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
(activity as MainActivity).setHomeFragmentListener(this)
..}
}
Я также звоню в сетьКод при загрузке фрагмента