簡體   English   中英

如何在不添加活動的情況下添加用於在片段之間滑動的 viewPager

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM