相关文章推荐
一身肌肉的钥匙扣  ·  Data governance ...·  9 月前    · 
一身肌肉的钥匙扣  ·  javascript - In ...·  9 月前    · 
一身肌肉的钥匙扣  ·  BIG-IP 15.1.2 Fixes ...·  10 月前    · 
一身肌肉的钥匙扣  ·  SNMP Config File ...·  11 月前    · 
善良的骆驼  ·  ONNX未使用GPU·  21 分钟前    · 
好帅的海龟  ·  轻松学pytorch之使用onnx ...·  21 分钟前    · 
活泼的生姜  ·  21 Markdown格式 | R语言教程·  21 分钟前    · 
开朗的咖啡  ·  编辑轴 - Tableau·  21 分钟前    · 

因为setUserVisibleHint方法过时,本文采用Viewpage2进行搭建

一个超级简单的demo,记录一下使用笔记,项目框架采用MVVM模式,以及DataBinding,所有控件都是通过DataBinding获取

首先看一下布局文件

       <androidx.viewpager2.widget.ViewPager2
            android:id="@+id/viewPage"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1" />
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="40dp"
            android:layout_gravity="bottom"
            android:orientation="horizontal">
            <TextView
                android:id="@+id/home_tv"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="首页"
                android:textColor="@color/black" />
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="@color/black" />
            <TextView
                android:id="@+id/center_tv"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="发现"
                android:textColor="@color/black" />
                android:layout_width="1dp"
                android:layout_height="match_parent"
                android:background="@color/black" />
            <TextView
                android:id="@+id/me_tv"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1"
                android:gravity="center"
                android:text="我的"
                android:textColor="@color/black" />
        </LinearLayout>


底部是一些按钮

MainActivity对viewpage的管理

    private val homeFragment: HomeFragment = HomeFragment()
    private val centerFragment: CenterFragment = CenterFragment()
    private val meFragment: MeFragment = MeFragment()
    private val fragmentList: MutableList<Fragment> = ArrayList<Fragment>()
    init {
        fragmentList.add(homeFragment)
        fragmentList.add(centerFragment)
        fragmentList.add(meFragment)
    override fun initialize(savedInstanceState: Bundle?) {
        binding.viewPage.adapter =
            FragmentViewPagerAdapter(this.supportFragmentManager,
                fragmentList,
                LifecycleRegistry(this).apply {
                    currentState = Lifecycle.State.RESUMED
        binding.viewPage.offscreenPageLimit = 3
        binding.viewPage.setCurrentItem(1, false)
        binding.viewPage.registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
            override fun onPageSelected(position: Int) {
                updataView(position, true)

对应ViewpageAdapter的FragmentViewPagerAdapter文件

class FragmentViewPagerAdapter(
    frgManager: FragmentManager,
    fragments: MutableList<Fragment>,
    lifecycle: Lifecycle,
    FragmentStateAdapter(frgManager, lifecycle) {
    private val fragmentList: MutableList<Fragment> = fragments
    fun addFragment(fragment: Fragment) {
        fragmentList.add(fragment)
    override fun getItemCount(): Int {
        return fragmentList.size
    override fun createFragment(position: Int): Fragment {
        return fragmentList[position]
                    因为setUserVisibleHint方法过时,本文采用Viewpage2进行搭建一个超级简单的demo,记录一下使用笔记,项目框架采用MVVM模式,以及DataBinding,所有控件都是通过DataBinding获取首先看一下布局文件       &lt;androidx.viewpager2.widget.ViewPager2            android:id="@+id/viewPage"            android:layout_width="match
最外层就不用说了FragmentManager.replace就可以实现,第二层用TabLayout+viewPager2+Fragment也可以解决但是因为数据量的问题Fragment大概会有30-40个 使用Leak内存检测第三方的时候发现在切换到第15个Fragment的时候会出现内存溢出
开始的写法
private var mFragmentList: MutableList<Fr
	Integer::parseInt
	Integer类的方法:public static int parseInt(String s) 将此String转换为int类型数据
		定义一个接口(Converter),里面定义一个抽象方法 int convert(String s);
		定义一个测试类(ConverterDemo),在测试类中提供两个方法
			一个方法
说明:个人使用ijkPlayer播放器(哔哩哔哩开源)、 注意点:默认不支持https格式在线视频、需要so库支持、 Ijk加载部分Https视频 前几秒会有播放过慢的情况。暂未到解决方案! 实现步骤:1、继承 FragmentStateAdapter(activity/fragment) 、2、实现 getItemCount、createFragment()、getItemId()(为了刷新)。在createFragment()函数中返回Fragment对象。 以下为简单代码实例: class Vi
本文的分析基于androidx 1.1.0版本,文中提到的setMaxLifecycle()方法是1.1.0-alpha07版本才引入的。最近把Android Studio更新到了3.5版本,新建项目时发现竟然已经强制使用androidx包了。 于是想着把以前项目中的一些公共类,像BaseActivity、BaseFragment等等都迁移到androidx方便今后的开发,要做的也很简单,就是重新导包,将原来的“support系列”替换为“androidx系列”。简单的迁移完成后我发现此前实现懒加载Fra
2019年11月20号,期待已久的ViewPager2 正式版终于发布了! 一、ViewPager2的新特性 ViewPager2从名字就可以看出来它是ViewPager的升级版,既然是升级版那么它相比ViewPager有哪些新功能和哪些API变化呢?我们接着往下看。 1.ViewPager2新特性 基于RecyclerView实现。这意味着RecyclerView的优点将会被ViewPager2所继承。支持竖直滑动。只需要一个参数就可以改变滑动方向。支持关闭用户输入。通过setUserInputEnabl
activity_main viewpager+fragment+侧滑的切换布局 &amp;amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;amp;gt; &amp;amp;lt;android.support.v4.widget.DrawerLayout xmlns:android=&amp;quot;http:/
viewpager + fragment 联合使用时,利用setUserVisibleHint进行懒加载时,发现并不适用于view的操作。。。因为setUserVisibleHint是早于oncreateview之前执行的,所以会报空指针,用一段代码演示一下 @Override public void setUserVisibleHint(boolean isVisible
问题:fragmentsetUserVisibleHint不执行 在实现fragment的懒加载时发现setUserVisibleHint不执行,查阅资料才发现,setUserVisibleHint只有结合FragmentPagerAdapter才能使用
Android应用开发过程中,ViewPager同时加载多个fragment,以实现多tab页面快速切换, 但是fragment初始化时若加载的内容较多,就可能导致整个应用启动速度缓慢,影响用户体验。 为了提高用户体验,我们会使用一些懒加载方案,实现加载延迟。这时我们会用到getUserVisibleHint()与setUserVisibleHint()这两个方法 在传统的frag
ViewPager2 从出来到现在已经有一段时间了,它修复了 ViewPager 常见的一些 bug,以及支持竖直方法和 RTL , 现在很多小伙伴已经开始使用上了。那么,学不懂也要学。 一、使用 首先,你的工程必须支持 androidx,我觉得新开的工程都可以使用 androidx了,一些主流的第三方库也都支持,而且 google 也说28以后,不再支持 support 库,当然这个看个人。 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:Kotlin+viewpager+BottomNavigationView+fragment实现滑动页面及底部导航键 首先在该activity布局内添加如下代码(一下 <androidx.viewpager.widget.ViewPager android:layout_width="match_parent" android:layout_height="match_parent" android:id="@
当然可以为您提供关于使用 Kotlin 编写 Fragment 嵌套的信息。 首先,您需要在 Kotlin 代码中定义一个继承自 Fragment 的类。这个类将作为您 Fragment 的基础,并且您需要重写其中的一些方法,比如 onCreateView()。 接下来,您可以在 onCreateView() 方法中加载您的布局,可以使用 LayoutInflater 和 ViewGroup 对象来实现。如果您需要嵌套 Fragment,则可以在布局中添加一个 Fragment 占位符,然后在 onCreateView() 方法中创建一个子 FragmentManager,使用该占位符添加您的子 Fragment。 以下是一个简单的示例: class ParentFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { val rootView = inflater.inflate(R.layout.fragment_parent, container, false) // 添加子 Fragment val childFragment = ChildFragment() childFragmentManager.beginTransaction() .replace(R.id.child_fragment_container, childFragment) .commit() return rootView class ChildFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { return inflater.inflate(R.layout.fragment_child, container, false) 在上面的代码中,ParentFragment 加载了一个名为 fragment_parent 的布局,并在其中添加了一个 Fragment 占位符(使用 id 为 child_fragment_container 的 FrameLayout)。然后,ParentFragment 创建了一个 ChildFragment 对象,并使用FragmentManager 将其添加到了占位符中。 ChildFragment 则加载了一个名为 fragment_child 的布局,并在其中显示了一些内容。 希望这可以帮助您开始编写 Kotlin Fragment 的嵌套!
Unknown failure (at android.os.Binder.execTransact(Binder.java:565))Error while Installing APKs 38502 Android异常:Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' 23383
 
推荐文章
善良的骆驼  ·  ONNX未使用GPU
21 分钟前
开朗的咖啡  ·  编辑轴 - Tableau
21 分钟前