FragmentPagerAdapter动态添加fragment和删除fragment

FragmentPagerAdapter动态添加fragment和删除fragment,第1张

做了一个关于viewPager动态添加fragmeng以及删除fragment的功能,但是奇怪的是,移除fragment的时候,调用了notifyDataSetChanged()方法,但是fragment并没有更新成新的,后来打印日志发现根本没有调用适配器中的instantiateItem()方法,而这个问题就需要你重写getItemPosition()方法,并且返回值POSITION_NONE,之后发现虽然调用了instaniateItem()方法,可是仍然没有展示新的fragment,在于adapter回去缓存的fragment,所以你需要重写getItemId()这个方法。其实还有一种省事的方法就是使用FragmentPagerStateAdapter来适配,但是我就是不写。

在Fragment中添加一个布局容器,并设置ID,在Activity中findbyview找到后,就可以动态添加了。

代码如下:

<?xml version="1.0"encoding="utf-8"?>

<LinearLayout xmlns:android="

android:layout_width="match_parent"

android:layout_height="match_parent"

android:orientation="vertical">

<Button

android:id="@+id/first_button"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/first_button"/>

<Button

android:id="@+id/second_button"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/second_button"/>

<Button

android:id="@+id/third_button"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/third_button"/>

</LinearLayout>

我们通常是用

getSupportFragmentManager().beginTransaction().replace(R.id.fragment_view, fragment).commit()

来添加fragment到指定的视图位置。所以你的需求只需你动态的改变需要替换的这个view的位置就好了,替换流程还是不变的。

动态的改变view的位置,这需要你在java代码里动态的设置view的位置。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/8007813.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-12
下一篇2023-04-12

发表评论

登录后才能评论

评论列表(0条)

    保存