[英]How to add a viewPager for swiping between fragments without adding an activity
我正在開發一個 Kotlin 應用程序,在某些時候我想實現 viewPager 以在片段之間滑動。 我有一個活動可以通過導航圖導航到應用程序的其余部分。 我還沒有真正理解這種滑動應該如何工作。
我的問題是,除了 pageAdapter 之外,我還需要實現一個新的活動嗎? 這個活動將如何與主要活動合作? 我的應用程序目前有一個啟動畫面,之后我希望在片段之間使用滑動模式。
我想實現 viewPager 在片段之間滑動。
好的
我有一個活動可以通過導航圖導航到應用程序的其余部分。
涼爽的
除了 pageAdapter 之外,我還需要實現一個新的活動嗎?
不
這個活動將如何與主要活動合作?
沒有第二個活動,那就不需要“合作”
我想在片段之間使用滑動模式。
https://gist.github.com/Zhuinden/c643f03a023a9cbe83fff6c75c948d3b
class MyFragmentPagerAdapter(
private val context: Context,
fragmentManager: FragmentManager
) : FragmentPagerAdapter(fragmentManager) {
override fun getCount() = 2
override fun getItem(position: Int) = when(position) {
0 -> FirstFragment()
1 -> SecondFragment()
else -> throw IllegalStateException("Unexpected position $position")
}
override fun getPageTitle(position: Int): CharSequence = when(position) {
0 -> context.getString(R.string.first)
1 -> context.getString(R.string.second)
else -> throw IllegalStateException("Unexpected position $position")
}
}
class ParentFragment: Fragment() {
override fun onCreateView(...) = ...
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val viewPager = view.findViewById(R.id.view_pager)
viewPager.adapter = MyFragmentPagerAdapter(requireContext(), childFragmentManager)
tabLayout.setupWithViewPager(viewPager)
}
}
嘗試這個
在您的 viewPager 中
class pageradapter (fm: FragmentManager) : FragmentStatePagerAdapter(fm){
override fun getItem(position: Int): Fragment {
when(position){
0-> return fragment1()
1-> return fragment2() // you can add more if you have more fragments
else-> return fragment3()
}
}
override fun getCount(): Int {
return 3
number of fragments that you have so the swiping could work
}
在你的片段 1 或 2 或 3 ...等'
class fragment1 : Fragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?): View? {
// Inflate the layout for this fragment
return inflater.inflate(R.layout.fragment1, container, false)
// write your codes
}
在啟動畫面后的 Activity 中
class MainActivity : AppCompatActivity(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main4)
val adapter = pageradapter(supportFragmentManager)
val pager = findViewById<View>(R.id.pager) as ViewPager
pager.adapter = adapter
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.