为什么getId不起作用

时间:2015-04-23 18:33:37

标签: android android-linearlayout

我正在寻找linearlayout孩子的id,但是当调用getid时它会返回-1

这是我的代码。

LinearLayout layout = (LinearLayout)findViewById(R.id.schedul1);
    for (int i = 0; i < layout.getChildCount(); i++) {
        View child = layout.getChildAt(i);
        int id=layout.getChildAt(i).getId();

我跟踪并发现子变量不为null但getId返回-1。 为什么? 任何关于获得linearlayout视图的子id的建议。

1 个答案:

答案 0 :(得分:3)

除非您在布局XML中设置每个视图的ID,或者以编程方式创建View,否则它将返回默认值(-1)。

  

观看可能具有与之关联的整数ID。这些ID通常在布局XML文件中分配,用于查找视图树中的特定视图。

http://developer.android.com/reference/android/view/View.html

Android源代码中getId()的javadoc也清楚地说明了这种行为:

  

用于标识视图的正整数,如果视图没有ID,则为NO_ID

http://developer.android.com/reference/android/view/View.html#getId()

接下来,NO_ID等于-1:

http://developer.android.com/reference/android/view/View.html#NO_ID