Mac*_*ver 10 android android-viewpager kotlin fragmentpageradapter fragmentmanager
由于API 27 FragmentPagerAdapter已弃用。最好的替代方法是什么?
就我而言,我知道super(fragmentManager, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)需要使用类似的东西,但是我不知道代码需要放在哪里。
我在课堂上得到了这些进口:
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
Run Code Online (Sandbox Code Playgroud)
但FragmentPagerAdapter在class MyViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager){被划掉。
class MyViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager){
private val fragmentList : MutableList<androidx.fragment.app.Fragment> = ArrayList()
private val titleList : MutableList<String> = ArrayList()
override fun getItem(position: Int): androidx.fragment.app.Fragment {
return fragmentList[position]
}
override fun getCount(): Int {
return fragmentList.size
}
fun addFragment(fragment: androidx.fragment.app.Fragment, title: String){
fragmentList.add(fragment)
titleList.add(title)
}
override fun getPageTitle(position: Int): CharSequence? {
return titleList[position]
}
}
Run Code Online (Sandbox Code Playgroud)
Com*_*are 25
更换:
class MyViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager)
Run Code Online (Sandbox Code Playgroud)
与:
class MyViewPagerAdapter(manager: FragmentManager) : FragmentPagerAdapter(manager, FragmentPagerAdapter.BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT)
Run Code Online (Sandbox Code Playgroud)
(假设MyViewPagerAdapter不需要此值是可配置的)
Bha*_*ani 16
使用 FragmentStateAdapter 切换到 ViewPager2。
这是 XML 视图:-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<com.google.android.material.tabs.TabLayout
android:id="@+id/tab_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/pager"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)
class AdapterTabPager(activity: FragmentActivity?) : FragmentStateAdapter(activity!!) {
private val mFragmentList: MutableList<Fragment> = ArrayList()
private val mFragmentTitleList: MutableList<String> = ArrayList()
public fun getTabTitle(position : Int): String{
return mFragmentTitleList[position]
}
fun addFragment(fragment: Fragment, title: String) {
mFragmentList.add(fragment)
mFragmentTitleList.add(title)
}
override fun getItemCount(): Int {
return mFragmentList.size
}
override fun createFragment(position: Int): Fragment {
return mFragmentList[position]
}
}
Run Code Online (Sandbox Code Playgroud)
这是实例化 ViewPager 的方法:-
val adapter = AdapterTabPager(activity)
adapter.addFragment(categoryFragment, "Category")
adapter.addFragment(brandFragment, "Brand")
rootView.viewpager.adapter = adapter
rootView.viewpager.currentItem = 0
TabLayoutMediator(rootView.tabs, rootView.viewpager) { tab, position ->
tab.text = adapter.getTabTitle(position)
}.attach()
Run Code Online (Sandbox Code Playgroud)
javadocs 实际上有以下弃用通知FragmentPagerAdapter:
该类已弃用。
切换到ViewPager2并改用FragmentStateAdapter。
| 归档时间: |
|
| 查看次数: |
4338 次 |
| 最近记录: |