Android:id从未在任何地方声明但存在?

时间:2012-12-10 05:27:04

标签: android

我从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 * 声明/设置。它来自哪里?

3 个答案:

答案 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(在示例中)。