【问题标题】:FragmentTransaction#add(int, Fragment) not doing anythingFragmentTransaction#add(int, Fragment) 什么都不做
【发布时间】:2015-04-09 23:16:29
【问题描述】:

我有一个ActionBarActivity(顺便说一下,它扩展了android.support.v4.app.FragmentActivity),我想在最顶层添加一个片段。这是我的代码:

FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
NotificationsFragment fragment = new NotificationsFragment();
ft.add(R.id.pager, fragment).commit();

地点:

  • NotificationsFragment 扩展 android.support.v4.app.Fragment
  • R.id.pager 是根视图的 id(即 android.support.v4.view.ViewPager

当上面的代码运行时,什么也没有发生。没有异常、崩溃或任何视觉变化。根本不值一提。我见过FragmentTransaction not doing anything 并且有一个建议告诉使用replace 而不是add,当我尝试这样做时,正在显示的寻呼机片段(记住,我的根视图是寻呼机)消失了。

我不知道发生了什么,而且我也是 Android 新手。我做错了什么?

注意:我在 ICS 中的最低 API 目标 (15),因此我不需要支持任何旧版本,因此任何涉及较新 API 的解决方案都是首选。

【问题讨论】:

  • 你确定要让代码在当前状态下工作吗?因为对我来说,ViewPager 的使用有点非传统,它通常通过像here 这样的适配器填充片段。另一方面,ViewPager 仍然是 ViewGroup,所以你 can make 最终是可行的......
  • @Android777 我实际上遵循了 android studio 的默认模板并创建了这个。
  • 这很奇怪,但第一个答案就是解决方案。
  • 您必须使用某种PagerAdapter。就像ListView 这样的视图需要某种Adapter 来生成每个列表项,ViewPager 需要Adapter 来创建构成“页面”的每个项。
  • @Squonk 但我不希望此片段进入页面。它应该显示在所有内容之上。

标签: android android-fragments


【解决方案1】:

我在我的应用程序中使用了 ViewPager,并使用了 FragmentStatePagerAdapter。 它将为您处理片段管理。

您可以阅读有关 ViewPager 的更多信息here

和 FragmentStatePagerAdapter here.

【讨论】:

    【解决方案2】:

    我自己找到了解决方案。我添加了一个框架布局作为根视图,并将寻呼机添加为子视图。然后我将片段添加到根视图,而不是寻呼机。它可以工作,显然视图寻呼机根本无法与添加到自身的自定义片段一起玩。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-09
      • 2015-06-04
      • 1970-01-01
      • 1970-01-01
      • 2019-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多