3

I examine code example from FragmentBasics.zip

http://developer.android.com/training/basics/fragments/communicating.html

There was this code (MainActivity.java):

ArticleFragment articleFrag = (ArticleFragment)
                getSupportFragmentManager().findFragmentById(R.id.article_fragment);

But I never find *article_fragment* declared/set anywhere in the whole classes or layouts(xml) or values. Where does it come from??

4

3 回答 3

1

R.id.article_fragment布局在当前示例中用于大屏幕设备,您可以在里面找到这个布局res/layout-large/news_articles.xml

于 2012-12-10T05:32:15.550 回答
1

检查项目中的 ArticleFragment 类。该类扩展了 Fragment,并且在该类中它们正在膨胀名为 article_view.xml 的 xml。

因此,基本上他们正在寻找扩展片段的那个类的 ID。

于 2012-12-10T05:33:25.850 回答
1

这是用于的 XML 代码res\layout-large\news_articles.xml

<fragment android:name="com.example.android.fragments.HeadlinesFragment"
          android:id="@+id/headlines_fragment"
          android:layout_weight="1"
          android:layout_width="0dp"
          android:layout_height="match_parent" />

<fragment android:name="com.example.android.fragments.ArticleFragment"
          android:id="@+id/article_fragment"
          android:layout_weight="2"
          android:layout_width="0dp"
          android:layout_height="match_parent" />

fragment带有属性的android:name="com.example.android.fragments.ArticleFragmentid 设置为:@+id/article_fragment

找到article_fragment正在使用的 id 的 JAVA 代码位于此方法的第 55 行public void onArticleSelected(int position): . 它会检查您是否使用双窗格布局。这就是为什么顶部提到的 XML 文件位于文件夹中的原因layout-large(在示例中)。

于 2012-12-10T06:02:37.473 回答