通过事务添加片段

Adding fragments via transaction

当我使用 transaction.add() 时,为什么我只能添加 R.id.xxx 布局,而不是 R.layout.xxx?

使用 R.id.xxx 的布局和使用 R.layout.xxx 的布局有什么区别?

此外,在我的 onCreateView 片段中,我应该膨胀哪个视图,activity_main 布局还是片段布局,为什么?

谢谢!

据我所知,您不能使用 R.id.xxx 来引用布局; R.id.xxx 是要添加到 R.layout.xxx 的 R.layout.xxx 元素的 ID 引用。

关于第二个问题,我假设你想用布局扩充片段视图。因此,您必须使用要在视图中显示的 R.layout.xxx 来膨胀视图。 你可以在这里找到一些非常清楚的解释: http://developer.android.com/guide/components/fragments.html 希望这有帮助。

这是三个不同的问题。

  1. When I use transaction.add(), why is that I can only add a R.id.xxx layout, instead of a R.layout.xxx?

我想你指的是 FragmentTransaction.add(containerViewId, fragment)

  • 要动态添加片段,它将使用您的 activity 布局(有一些例外情况,但这是一般规则)。 activity 布局需要一个带有 id 的布局,您需要将其作为方法中的第一个参数提供
  1. What's the difference between a layout with an R.id.xxx and a layout using R.layout.xxx?
  • R.layout.xxx 指向 res/layout/xxx.xml 文件并将其用作布局(展开视图)
  • R.id.xxx 是绑定到任何 res/layout 个文件中的视图或布局的唯一 ID。
  1. Also, in my fragment in onCreateView, which view am I supposed to inflate, the activity_main layout or the fragment layout, and why?
  • 片段布局
  • fragment 包装了一个视图(或你的布局),并将其传递到具有上述 id 的布局中(调用 FragmentTransaction.add()