【问题标题】:How do I find the ID of a fragment? Alternatively, how do I give the fragment an ID?如何找到片段的 ID?或者,我如何给片段一个 ID?
【发布时间】:2013-11-29 10:15:54
【问题描述】:

(首先,我知道这个问题已经被问过很多次了,但我还没有找到合适的答案)

我有一个这样创建的片段:

inflater.inflate ( R.layout.fragment_task_ongoing, container, false );

我想要的是在 FragmentActivity 中使用 findFragmentById,如下所示:

TaskActiveFragment f = ( TaskActiveFragment ) getSupportFragmentManager ().findFragmentById ( R.id.fragment_task_ongoing );

不幸的是,这会返回 null。显而易见的原因是用作参数的 id 是正在膨胀的 RelativeLayout 的 id,而不是 Fragment。布局的第一行:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/fragment_task_ongoing"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp" >

那么,我如何找出 fragment 的 ID 是什么?如果它没有身份证,我如何给它一个?以编程方式? XML?

编辑:我的片段被添加到 FragmentStatePagerAdapter,然后被添加到 ViewPager。

【问题讨论】:

  • 答案可以在这里找到。 stackoverflow.com/q/9363072/827110
  • 我看不出答案是如何适用的。似乎假设片段以与我不同的方式添加,使用 FragmentTransaction.add()。
  • 以及如何将片段添加到 Activity 布局中?
  • 通过 FragmentStatePagerAdapter 到 ViewPager。
  • 片段 ID 不是片段本身的一部分。您要查找的 id 是容器的 id。

标签: android findviewbyid


【解决方案1】:

如果您保留对 FragmentStatePagerAdapter 和视图中 Fragment 索引的引用,您可以在 FragmentStatePagerAdapter 上调用 getItem(int position),这将返回 Fragment。

【讨论】:

  • 这行得通,而且比我在其他线程中看到的其他一些建议要简单很多
猜你喜欢
  • 2022-10-07
  • 1970-01-01
  • 1970-01-01
  • 2013-02-01
  • 2013-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多