android前进声明在1.6中不起作用

时间:2010-10-01 03:10:53

标签: eclipse forward-declaration relativelayout android-sdk-1.6

根据官方网站,Android支持从版本1.6开始的前向声明。

在manifest.xml中将min SDK和目标SDK要求都调整为'4'后,eclipse中的布局编辑器仍抱怨相对布局中的未知声明:

<xml>

<CheckBox 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content"
  android:id="@+id/ChkBoxSaveuser"
  android:text="@string/options_saveuser"
  android:layout_above="@id/ChkBoxSavePwd"
  android:layout_marginTop="20dp"
  android:layout_alignLeft="@id/EditTxtServer"/>

 <EditText 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@+id/EditTxtServer" 
  android:maxLines="1"
  android:minWidth="200dp"
  android:layout_marginTop="10dp"
  android:layout_gravity="center_horizontal"
  android:layout_above="@id/ChkBoxSaveuser"/>

</xml>
  

在此行找到多个注释:

     
      
  • 错误错误:找不到与给定名称匹配的资源(在'layout_above'中,值为'@id /    ChkBoxSavePwd')。

  •   
  • 错误错误:找不到与给定名称匹配的资源(在'layout_alignLeft'处有值)    '@ ID / EditTxtServer')。

  •   
清洁/重建没有帮助..有人偶然发现了这件事吗?

1 个答案:

答案 0 :(得分:17)

要使用前向引用,请在第一次使用引用时声明引用(使用&#34; @ + id /..."表示法),而不是在实际元素上。

<xml>

<CheckBox 
  android:layout_width="wrap_content" 
  android:layout_height="wrap_content"
  android:id="@+id/ChkBoxSaveuser"
  android:text="@string/options_saveuser"
  android:layout_above="@+id/ChkBoxSavePwd"
  android:layout_marginTop="20dp"
  android:layout_alignLeft="@+id/EditTxtServer"/>

 <EditText 
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@id/EditTxtServer" 
  android:maxLines="1"
  android:minWidth="200dp"
  android:layout_marginTop="10dp"
  android:layout_gravity="center_horizontal"
  android:layout_above="@id/ChkBoxSaveuser"/>

</xml>