我从FragmentBasics.zip
中检查代码示例http://developer.android.com/training/basics/fragments/communicating.html
有这段代码(MainActivity.java):
ArticleFragment articleFrag = (ArticleFragment)
getSupportFragmentManager().findFragmentById(R.id.article_fragment);
但我从未在整个类或布局(xml)或值中的任何位置找到 * article_fragment * 声明/设置。它来自哪里?
答案 0 :(得分:1)
R.id.article_fragment
布局用于大屏幕设备
你可以在res/layout-large/news_articles.xml
答案 1 :(得分:1)
检查Project中的ArticleFragment类。该类是扩展Fragement,并在该类中扩展名为article_view.xml的xml。
所以,基本上他们找到了那个扩展Fragment的类的ID。
答案 2 :(得分:1)
这是res\layout-large\news_articles.xml
中使用的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.ArticleFragment
的ID设置为:@+id/article_fragment
您找到正在使用的ID article_fragment
的JAVA代码位于此方法的第55行上:public void onArticleSelected(int position)
。它会检查您是否使用双窗格布局。这就是为什么顶部提到的XML文件位于layout-large
foldr(在示例中)。