Небольшой демо проект, два модуля - app и lib
class TabFragmentAdapter(activity: FragmentActivity) : FragmentStateAdapter(activity) {
private val fragments = listOf(ConnectFragment(), SendFragment(), UserLogFragment(), SocketLogFragment())
private val titles = listOf("Connect","Send","User log","Socket log")
override fun getItemCount(): Int = titles.size
override fun createFragment(position: Int): Fragment {
Timber.d("createFragment called, position: $position")
return fragments[position]
}
fun getTitle(position: Int): String {
return titles[position]
}
}
MainActivity
val viewPager = findViewById<ViewPager2>(R.id.pager)
val tabFragmentAdapter = TabFragmentAdapter(this)
viewPager.adapter = tabFragmentAdapter
val tabs = findViewById<TabLayout>(R.id.idTabLayout)
TabLayoutMediator(tabs,
viewPager) { tab, position ->
tab.text = tabFragmentAdapter.getTitle(position)
}.attach()
все вроде бы стандартно
но
в логах
Активити создается один раз
12:40:09.867 MainActivity onCreate called, this: ***.MainActivity@be5921a
Как только доходит до пейджера - логи удваиваются
12:40:10.121 TabFragmentAdapter createFragment called, position: 0
12:40:10.121 TabFragmentAdapter createFragment called, position: 0
12:40:10.161 ConnectFragment onAttach called, this: ConnectFragment{e7c6b82} (ff5aac30-97cd-4606-bd1b-d4ec0a6040b0 tag=f0)
12:40:10.162 ConnectFragment onAttach called, this: ConnectFragment{e7c6b82} (ff5aac30-97cd-4606-bd1b-d4ec0a6040b0 tag=f0)
12:40:10.165 ConnectFragment onCreate called, this: ConnectFragment{e7c6b82} (ff5aac30-97cd-4606-bd1b-d4ec0a6040b0 tag=f0)
12:40:10.168 ConnectFragment onCreate called, this: ConnectFragment{e7c6b82} (ff5aac30-97cd-4606-bd1b-d4ec0a6040b0 tag=f0)
12:40:10.242 ConnectFragment onViewCreated called, this: ConnectFragment{e7c6b82} (ff5aac30-97cd-4606-bd1b-d4ec0a6040b0 tag=f0)
12:40:10.244 ConnectFragment onViewCreated called, this: ConnectFragment{e7c6b82} (ff5aac30-97cd-4606-bd1b-d4ec0a6040b0 tag=f0)
12:52:02.160 Transmissi...er$connect launch socket error listener, datagramSocketManager = библиотека.DatagramSocketManager@a701a9b
12:52:02.161 Transmissi...er$connect launch socket error listener, datagramSocketManager = библиотека.DatagramSocketManager@a701a9b
и когда я в этом фрагменте нажимаю кнопку и обращаюсь к библиотеке- библиотечные логи тоже удваиваются
и при всем этом - фрагменты в одном экземпляре и в библиотеке адреса совпадают