ANDROID:ViewPager 在 instantiateItem 方法中具有不同的 Fragments

2024-04-13

I use ViewPager创建向左滑动的片段,现在我想将片段插入到每个片段页面中。

活动_Main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout
    ...
    android:orientation="vertical">

    <android.support.v4.view.ViewPager
        android:id="@+id/myviewpager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"/>

    <devlight.io.library.ntb.NavigationTabBar
        android:id="@+id/ntb_horizontal"
        app:ntb_swiped="true"/>


</android.support.design.widget.CoordinatorLayout>

和这个:tab0_fragment.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="40dp"
        android:textSize="30sp"
        android:gravity="center"
        android:id="@+id/textView"
        android:layout_centerHorizontal="true"
        android:textColor="@android:color/holo_green_dark"
        android:text="Social\nFragment"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:autoLink="web"
        android:textSize="15sp"
        android:layout_marginTop="10dp"
        android:layout_centerHorizontal="true"
        android:text="androidbelieve.com"
        android:textColor="#000"
        android:layout_below="@+id/textView"
        android:textStyle="italic"/>

</RelativeLayout>

我有一个ViewPager in mainActivity.java

final ViewPager viewPager = (ViewPager) findViewById(R.id.myviewpager);
viewPager.setAdapter(new PagerAdapter() {
...

...
}

我尝试通过片段布局在 viewpager 中打开一个屏幕。

我试试这个:

final ViewPager viewPager = (ViewPager) findViewById(R.id.myviewpager);
viewPager.setAdapter(new PagerAdapter() {
    ...
    public Object instantiateItem(final ViewGroup container, final int position) {
           if (position == 0)
           {
                final View view = LayoutInflater.from(getBaseContext()).inflate(R.layout.fragment_tab0, null, false);
                FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
                fragmentTransaction.replace(R.id.myviewpager,new tab0Fragment()).commit();
                container.addView(view);
                return view;
           }
           else if (position == 1)
           ...

   } 

...
}

AND tab0Fragment.java

public class tab0Fragment extends Fragment {

    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_tab0,null);
    }
}

我是安卓菜鸟。如何更正此代码?


解决方案:答案不是我的答案,但对我帮助很大。

据@先生。兔子 ans @Amit Upadhyay 我将顶部代码更改为:

@Override
            public Object instantiateItem(final ViewGroup container, final int position) {

                if (position == 0)
                {
                    final View view = LayoutInflater.from(getBaseContext()).inflate(R.layout.fragment_tab0, null, false);
                    MyAdapter adapter = new MyAdapter(getSupportFragmentManager());
                    adapter.addFragment(new tab0Fragment(), getResources().getString(R.string.tab0));
                    container.addView(view);
                    return view;
                }
                else if (position == 1)
                {

并根据@Mr 添加 MyAdapter 类。兔子的回答。

希望能帮助别人。


尝试将您的适配器和下面的代码分开。

MyAdapter.java

public class MyAdapter extends FragmentPagerAdapter{

    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public MyAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }


    public void addFragment(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}

创建您的片段

FragmentOne.java

public class FragmentOne extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)    {
      View  view = inflater.inflate(R.layout.fragment_one, container, false);
        return view;
    }
}

FragmentTwo.java

public class FragmentTwo extends Fragment {
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)    {
     View  view = inflater.inflate(R.layout.fragment_two, container, false);
        return view;
    }
}

在您的活动中像这样设置您的viewpager。

final ViewPager viewPager = (ViewPager) findViewById(R.id.myviewpager);
    MyAdapter adapter = new MyAdapter(getSupportFragmentManager());

    // Add your fragments in adapter.
    FragmentOne fragmentOne = new FragmentOne();
    adapter.addFragment(fragmentOne, getResources().getString(R.string.fragment_one_title));

    FragmentTwo fragmentTwo = new FragmentTwo();
    adapter.addFragment(fragmentTwo, getResources().getString(R.string.fragment_two_title));

    viewPager.setAdapter(adapter);

最后使用 ViewPager 设置 NavigationTabBar。

final NavigationTabBar navigationTabBar = (NavigationTabBar) findViewById(R.id.ntb_horizontal);
navigationTabBar.setViewPager(viewPager, 2);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ANDROID:ViewPager 在 instantiateItem 方法中具有不同的 Fragments 的相关文章

  • ImageIO read() 和 write() 操作后 GIF 图像变得错误

    我有这个代码 它只是读取 GIF 文件 用背景重新绘制它 然后输出到新的 GIF 文件 问题是结果文件变得奇怪 我不知道为什么它的质量变得很差 JPG 文件不会出现此问题 如何修复它 import java awt Color import
  • 找不到导航对象。您的组件是否位于导航器屏幕内?

    在我下面的代码中 当我使用 useNavigation 时 它会给出像我的问题一样的错误 如何使用useNavigation 请任何人都可以解决此错误 错误 找不到导航对象 您的组件是否位于导航器屏幕内 我从这里跟踪了代码https rnf
  • javax.validation 的 @AssertTrue - 它不应该创建错误消息吗?

    我在 Spring MVC 命令 bean 中有以下代码 AssertTrue public boolean isConditionTrue return false private boolean conditionTrue 我的 JSP
  • .NET 中的 Class.forName() 等效项?

    动态获取对象类型然后创建它的新实例的 C 方法是什么 例如 如何在 C 中实现以下 Java 代码的结果 MyClass x MyClass Class forName classes MyChildClass newInstance Lo
  • 如何在运行时添加TextView?

    如何在运行时向布局添加新的 TextView 是否可以 完整的解决方案 View parent parent view where to add ViewGroup layout new LinearLayout context layou
  • 如何使用二叉树中的递归来完成回溯

    我正在尝试插入一个二进制节点 我的代码很复杂 没有希望挽救它 所以我计划重写它 基本上我没有考虑回溯 也没有仔细考虑算法 我正在尝试使用顺序遍历插入二进制节点 但我不明白应该如何回溯 D B E A C F 我如何搜索根 D 的左子树 然后
  • 如何在静音模式下启用媒体声音

    即使在静音模式下如何启动声音 我的音频文件位于我的原始文件夹中 我已经编写了一些代码 但是当我进入 Android 的声音设置时 铃声和闹钟是唯一更改为最大值的设置 但媒体部分没有更改 这是我的代码 public void playSoun
  • 参数列表中的“...”是什么意思? doInBackground(字符串...参数)

    我不明白那个语法 尝试用谷歌搜索各种单词加上 是没有用的 它被称为varargs http java sun com j2se 1 5 0 docs guide language varargs html 这个事实应该产生更好的谷歌结果 h
  • Guice 字段注入不起作用(返回 null)

    我在使用 Guice 时遇到空值问题 接下来我将向您展示一个类似场景的示例 我知道字段注入是一种不好的做法 但我希望它在演示中像这样工作 我有一个名为B 这是我要注入的 class B Inject public B public void
  • android Studio 日志不起作用

    我无法在手机上使用日志 我只在 Android Studio 中收到此错误 11 01 03 28 56 427 24227 24375 com example segall caveofprogcourse E GED 无法获取 GED
  • 为 Android 编译时显示 FFMPEG 错误

    我正在尝试将 ffmpeg 添加到我的 android 项目中 我使用的是 ubuntu 14 04 操作系统 我正在关注此链接 Link https software intel com en us android blogs 2013
  • 通过命令行增加Java中的MaxPermSize内存

    您能否解释一下如何增加此 PermSpace 大小 我正在使用 Gate 应用程序并加载大量数据和大量插件 不幸的是每次运行后都会出现有关内存不足 maxPermSpace 的错误 我到处搜索 但我找不到如何通过命令行增加这个大小 或者可能
  • 多次调用 startService 时实际会发生什么

    我正在打电话startService 多次对同一服务有不同的意图 很明显 任何时候都只存在一个服务实例startCommand 被称为每个startService 我的问题是 调用时有性能影响吗startService 多次 意图会按照调用
  • ElasticSearch - 定义自定义字母顺序进行排序

    我正在使用 ElasticSearch 2 4 2 通过 Java 的 HibernateSearch 5 7 1 Final 我在字符串排序方面遇到问题 我的应用程序的语言有变音符号 它们有特定的字母顺序 订购 例如 直接在之后L 追随O
  • android.media.Ringtone.play() 在播放 28 次后停止工作

    我有一个打开了几个小时的应用程序 并使用后台服务并附加了前台通知 每隔一段时间就会使用以下方式播放声音 try Ringtone r RingtoneManager getRingtone context uri r play catch
  • Tomcat 与 Weblogic JNDI 查找

    我们使用的 Weblogic 服务器已配置为允许 JNDI 数据源名称 例如 appds 对于开发 本地主机 我们可能会运行 Tomcat 并且在 server xml 的 部分中声明时 Tomcat 会将 JNDI 数据源挂在 JNDI
  • sqlite3权限被拒绝android

    我试图直接在 Nexus 上访问我正在开发的应用程序的数据库 但当我尝试执行 sqlite3 命令时 我收到 权限被拒绝 的消息 我还尝试在 root mod 中启动 adb 但再次 设备上的权限被拒绝 我想我必须使用模拟器来做到这一点 但
  • 当应用程序打开时,应用程序未显示接收 FCM 的通知

    当我从 Firebase 发送推送时 如果应用程序在后台或已关闭 我会收到通知 但当应用程序打开时不会 调试我发现它在 MyMessagingService 中特别是在 onMessageReceived 处停止 所以我猜我的问题在于生成通
  • 来自 Janino 和 Commons-Compiler 的 Spark java.lang.NoSuchMethodError

    我正在构建一个使用 Spark 进行基于随机森林分类的 应用程序 当尝试运行该程序时 我从该行收到异常 StringIndexerModel labelIndexer new StringIndexer setInputCol label
  • Android API 8、10 ContactsContract.Data.HAS_PHONE_NUMBER 没有这样的列

    以下查询在我的设备上运行良好 API 15 它在我运行 API 8 或 API 10 的模拟器中不起作用 这是查询 Cursor contactsCur getContentResolver query ContactsContract D

随机推荐

  • 如何检查Android中的颜色亮度?

    如何在android中检查亮度 我有一个整数值的颜色 我想根据颜色的整数值检查该颜色是深色还是浅色 if checkColor Color RED checkColor Color BLACK set fore color is white
  • 如何将js对象转换为点表示法字符串

    我有一个像这样的 JavaScript 普通对象 a b 1 我想将其转换为点符号字符串 如下所示a b 1 用例 将对象发送到纯文本环境 例如 cli 或作为 url 参数 很难判断这是否是您想要的 但是这样的东西会将对象树扁平化为点路径
  • UISegmentedControl 不更新视图

    我正在 Xcode 5 中构建一个应用程序 并且遇到了一些奇怪的行为UISegmentedControl 首先是我正在构建的应用程序的一些信息 我正在构建一个应用程序 我希望允许用户在注册公司订购产品 作为一项额外服务 我希望允许他们查看他
  • Xcode 6.1 中的 segue 操作列表中没有“显示”

    我是 swift 和 IOS 开发的新手 系统信息 Xcode 6 1 发行说明 操作系统 X 10 10 1 我的应用程序有两个视图控制器 ViewA 和 ViewB 无导航控制器 我想通过单击 ViewA 中的 UIButton 从 V
  • NSDictionary 对比NSArray

    我正在阅读 Objective C 一本书呆子牧场的书 我不禁思考这个问题 我如何决定使用哪种集合类型 NSArray 或 NSDictionary 都带有或不带有可变子类 从 URL 读取内容时 假设我正在从 PHP 脚本读取 JSON
  • 如何在 Safari Web Inspector 中应用样式规则?

    Chrome 开发者工具允许您在 样式 窗格中应用样式规则 我还没有找到在 Safari 样式规则 窗格 中执行此操作的方法 有人知道是否可能吗 另外 Safari 是否有像 Chrome 那样的标尺 OS X 上的 Safari 8 0
  • Lucene索引:查询时得到空结果

    我正在尝试使用 Lucene 索引进行查询 但在日志中得到空结果和以下错误 Traversal query query without index select jcr path from nt base where isdescendan
  • Django:INSTALLED_APPS 是“.apps.AppConfig”多余的吗?

    我没有看到这个问题的答案版本 这确实让我很困扰 因为我已经看到两者都被使用了 在此示例中 myapp 是创建的应用程序 我不断看到用户在 INSTALLED APPS 列表中设置他们的应用程序 如下所示 INSTALLED APPS mya
  • “保留 Xcode 版本”与“在磁盘上使用版本”之间的区别?

    当我使用 git 时 我通常会在分支和我的分支之间切换iOSBaseSDK xcworkspace文件被修改 发生这种情况时 我的 Xcode 会显示以下警报 文件 YourProject xcworkspace 已被另一个应用程序修改 该
  • jquery通过css过滤元素

    例如 我想选择每个具有红色背景颜色的 div 这在 jquery 中可能吗 div style background color red div div style background color white div div style
  • 让 UILabel 发光并看起来明亮的最佳方法是什么?

    我制作了 UILabel 显示当前时间 我希望时间 UILabel 在屏幕上发光 我尝试了通过谷歌找到的许多答案 但没有人正常工作 需要这样 https i stack imgur com 4REJp png https i stack i
  • 自动映射器 UseDestinationValue

    映射时遇到问题 VPerson vPerson new VPerson Id 2 Lastname Hansen1 Name Morten1 DPerson dPerson new DPerson Id 1 Lastname Hansen
  • 仅在单个正则表达式中多次匹配一组

    嗨我的问题很简单 我只想匹配文章中所有可能的主题标签 前提是它们位于
  • 无法在 Spring Boot 应用程序中加载驱动程序类:org.h2.Driver

    I am trying to learn microservices by creating a dummy project I have a config repository in git and a config server run
  • jQuery .click() 在 Safari 中不起作用

    我看过几篇类似的帖子 其中的解决方案似乎对这些人有用 但我无法让它发挥作用 我在用http tutorialzine com 2013 05 mini ajax file upload form http tutorialzine com
  • 使用 Java 控制 Arduino

    我正在寻找一个LED http en wikipedia org wiki Light emitting diode用Java程序打开和关闭 我用 C 完成了这个项目大约 5 分钟 但用 Java 似乎更具挑战性 我让 Arduino 等待
  • android-support-v4.jar依赖错误

    我刚刚创建了一个新的空白 Android 项目minsdk如2 2在最新的Eclipse Luna Eclipse中自动添加了一个android support v4 jar在项目的libs文件夹中 这导致控制台出现错误 Found 2 v
  • 奇怪的错误:ZeroDivisionError:浮点除以零

    我发现了一个奇怪的行为 希望有人能对此做出解释 我正在做 if len list gt 1 and len list2 gt 1 total sum list sum list2 result percentage sum list tot
  • Ruby 逻辑运算符 [重复]

    这个问题在这里已经有答案了 可能的重复 Ruby 中的 and or 运算符背后有什么智慧吗 https stackoverflow com questions 1434842 is there any wisdom behind and
  • ANDROID:ViewPager 在 instantiateItem 方法中具有不同的 Fragments

    I use ViewPager创建向左滑动的片段 现在我想将片段插入到每个片段页面中 活动 Main xml