【问题标题】:getSupportFragmentManager().beginTransaction().add(android.R.id.content, f) not workinggetSupportFragmentManager().beginTransaction().add(android.R.id.content, f) 不工作
【发布时间】:2013-08-18 10:17:45
【问题描述】:
// 放置一个 ArticleFragment 作为我们的内容窗格
最终的 ArticleFragment f = new ArticleFragment();
getSupportFragmentManager().beginTransaction().add(android.R.id.content, f).commit();

这行代码来自NewsReader sample app

如果活动扩展ActionBarActivity,为什么它们不工作?如果 Activity 扩展了 FragmentActivity,一切正常。

更新:

不工作意味着:ArticleFragment 不可见,它发生在 Android

为什么?

拉尔夫

【问题讨论】:

  • 请编辑您的问题以完整准确地解释“不工作”的含义,而不是期望我们猜测。
  • 不工作意味着:ArticleFragment 不可见。

标签: android android-fragmentactivity android-actionbar-compat


【解决方案1】:

android.R.id.content 在使用ActionBarActivity 时不适用于Android 2.3 及更低版本。 There is a bug filed for this,尽管我怀疑它是否会得到解决。我发现的唯一解决方法是用你自己的FrameLayout 调用setContentView() 并将其用作FragmentTransaction 的目标。

【讨论】:

  • 解决方法是指在布局文件中定义片段,然后在 setContentView() 期间创建它?这样我就无法将参数传递给我的片段。
  • 好的,我通过调用 getActivity().getIntent().getExtras() 解决了这个问题。我希望谷歌能比以后发布固定的支持库。
  • @marcin_j:“解决方法是指在布局文件中定义片段,然后在 setContentView() 期间创建它?” - 我不知道这是否有效,那不是我写的。当我写FragmentTransaction 时,我的意思是FragmentTransaction
【解决方案2】:

因为它应该扩展 SherlockFragmentActivity 或任何其他支持库,所以对于以前的 android 版本,您必须将支持库添加到您的 lib 文件夹中,

但是 getSupportFragmentManager 适用于以前的 android 版本,换句话说,如果您希望您的应用程序正常工作,因为它将 getSupportFragmentManager 更改为 getFragmentManager 并将您的 minSdkVersion 更改为 11 并将目标更改为 17,祝您好运

【讨论】:

  • ActionBarActivity 是 Google 的新“ActionBarSherlock”。它与 ABS 无关,ActionBarActivity 本身扩展了 FragmentActivity。 ActionBarActivity 来自 SupportLibrary。
猜你喜欢
  • 2021-12-16
  • 2017-10-11
  • 2018-07-23
  • 1970-01-01
  • 2014-09-02
  • 2010-10-13
  • 2015-08-12
  • 1970-01-01
  • 2013-03-13
相关资源
最近更新 更多