1. 程式人生 > >如何避免android layout.xml 佈局檔案中重名id的錯誤

如何避免android layout.xml 佈局檔案中重名id的錯誤

在android 開發中,用來描述檢視佈局的layout.xml檔案中,通常會涉及到控制元件或子佈局的變數命名問題,有的時候大家為了提編碼速度,可能會造成同名id的問題。那麼佈局檔案中的id是否可以同名呢?

分兩種情況:

同一個layout.xml中的id重名

不同layout.xml檔案的id重名

情況一

在同個一個Xml檔案的中若同名了,則前一個有效,而後一個無效,即後一個Null掉。如

    <span style="font-size:14px;"><Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textView1"
        android:layout_alignRight="@+id/textView1"
        android:layout_marginBottom="58dp"
        android:layout_marginRight="18dp"
        android:text="Button1" />

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignRight="@+id/button"
        android:layout_centerVertical="true"
        android:text="Button2" /></span>


前一個Button有效(即 android:text="Button1" ),後一個無效。

情況二:在不同的Xml 檔案中的同名

在同個一個Xml檔案的中若同名了,兩者都有效的。

當android的工程越來越大。xml檔案越來越多時,避免不了兩個xml檔案中同樣的元件使用同樣的id名字,gen目錄下的R.java檔案中,有關id的宣告都在id的class中,即public static final class id{};當兩個xml檔案中同樣的元件,比如Button,有可能很多個檔案中,都有id=”@+id/Button”,開始以為在Java類中引用會重複的id造成程式的不識別。

後來偶然一次錯誤發現,只需你setContentView(R.layout.updatemyaddressbook);中的xml檔案以及這個xml檔案相關的xml檔案中的id不重複,在類中使用findViewById(R.id.Button);時,程式是不會不識別的。

這個問題非常地容易理解:因為在Android的框架設計中,每一個控制元件都隸屬於一棵控制元件樹,每個控制元件都被其父控制元件所管理與調配,而根控制元件是一個容器控制元件,所有的子控制元件都是構造在這個根控制元件之上,這樣並形成了一個控制元件樹的控制元件域,在這個控制元件域中是不允許重名的,超出了這個控制元件域則這些控制元件的ID是無效的,也就是說在容器控制元件中的子控制元件是不允許重名的,而不在同一容器控制元件中的兩個控制元件重名也無所謂。

建設在實際的開發中還是不要重名的好,那到如何解決這個問題呢?

通過配置eclipse提高這種錯誤的提示級別就可以了。具體方法如下:

windows->preferrece(首選項)-Android-Link Error Checking將DuplicateIds的提示級別 提高 為Error,以後再出現重名ID的時候,就會提示錯誤了。



相關推薦

如何避免android layout.xml 佈局檔案id錯誤

在android 開發中,用來描述檢視佈局的layout.xml檔案中,通常會涉及到控制元件或子佈局的變數命名問題,有的時候大家為了提編碼速度,可能會造成同名id的問題。那麼佈局檔案中的id是否可以同名呢? 分兩種情況: 同一個layout.xml中的id重名 不同la

AndroidXML佈局檔案,使用自定義屬性不提示和不生效

在XML檔案中使用首先要宣告 xmlns:toolbar=http://schemas.android.com/apk/res/cn.zzm.toolbar 注意,“toolbar”可以換成其他的任何名字,後面的url地址必須最後一部分必須用上自定義元件的包名。自定義屬性了

Androidxml佈局檔案使用include引入佈局進行復用(解決使用include佈局重疊,顏色設定無效問題)

使用include引入佈局的作用   提取重複的佈局程式碼,方便進行復用 如何使用   比如我們想要線上性佈局中建立三塊需要複用的佈局headview、centerview、butto

android關於用.xml佈局檔案對View新增OnClick事件無法響應的事情

   最近在寫一個專案,用到了Fragment,於是在Fragment裡用用LayoutInflate映射了一個.xml的佈局檔案, mRootView = (ViewGroup) inflater.inflate(R.layout.luka_category_fragme

Android Studio XML佈局檔案設定程式碼自動補齊快捷鍵

Android Studio XML佈局檔案中你會發現無法進行程式碼快捷鍵提示了,經過查詢發現: File -> Settings -> keymap  然後在收入框裡寫 Basic 我的是更改為Alt+反斜槓 然後右擊Basic的快捷鍵remove再新增你想

android manifest.xml配置檔案的 Service節點

The name of the process where the service is to run. Normally,all components of an application run in the default process created for theapplication. It ha

Android 載入Assets目錄Xml佈局檔案

  最近由於專案開發使用到了動態佈局,因為打包sdk ,sdk 這塊activity 需要一些layout 檔案 。而做過sdk 開發的小夥伴應該知道,layout 檔案是不能打包到jar 中的。當然了aar 除外。由於專案使用的還是jar包,所以怎麼解決lay

Androidmeasure過程、WRAP_CONTENT詳解以及xml佈局檔案解析流程淺析(上)

  繪製流程的三個步驟,即:                      1、  measure過程 --- 測量過程                      2、 layout 過程     --- 佈局過程                      3、 draw 過程

ViewPager動態新增XML佈局檔案,並獲取XML檔案控制元件ID的操作(inflate)

Step 1: 佈局檔案中新增viewpager和切換頁面button <spanstyle="font-size:18px;"><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/a

一個很好,很實用,學習android xml佈局檔案

用了各種佈局組合成一個漂亮的見面。新手很實用的一個例子,大家學習一下。。。。。。分享 本例用到了(相對佈局,線性佈局的各種巢狀使用) 效果圖片: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout

eclipse新建Android專案無法顯示xml佈局檔案

今天使用eclipse新建Android專案後,編寫xml佈局檔案時想預覽一下效果, 結果無法顯示,並且報錯:The following classes could not be instantiat

Android效能優化之:XML佈局檔案優化

Android中XML佈局檔案的使用非常頻繁,在載入XML佈局的時候,如果對XML檔案其進行優化,將會提高載入的效率。 HierarchyViewer工具 再開始介紹之前先說一下HierarchyViewer工具的使用。 不合理的佈局會使我們的應用程式

Spinner的OnItemSelectedListener事件(在佈局檔案通過Spinner的android:entries屬性載入列表)

一、介面    1、新建province.xml件。   在“res/values”位置新建province.xml檔案。   (1)province.xml檔案位置如下圖所示:      (2)province.xml內容如下:        (3)程式碼

Android佈局檔案控制元件的高度與寬度屬性設定

大家都知道,在Android佈局檔案中控制元件的高度與寬度設定時有三個屬性:fill_parent,match_parent,wrap_content。1. fill-parent:        設定一個構件的佈局為fill_parent將強制性地使構件擴充套件,以填充佈局單元內儘可能多的空間。這跟Wind

Android Studio快速將佈局檔案通用的屬性抽取成Style

如題,有時候看見一個佈局寫上幾百行看上去會非常吃力麻煩,這時候抽取控制元件樣式很有必要了, Android Studio提供了抽取Style樣式的方式, 可能是藏的太深了, 很少人用 游標放在控制元件內: 右鍵 –>Refactor –> Extract –

技巧-如何在android專案中將佈局檔案存放在不同目錄

今天來聊聊關於將Android應用程式的佈局檔案的存放,因為開發過程中發現有時候在同一個資料夾中存放了太多佈局檔案會造成很多麻煩。如果你的專案有超過30個佈局,想要查詢一個佈局檔案會讓很頭疼。這個問題的解決方案就是將它們分散在不同的資料夾中,gradle給我們提供了這項便利

解決Android studio無法預覽xml佈局檔案的問題

xml檔案中 xmlns:android="http://schemas.android.com/apk/res/android"> 出現“URI is not registered”,eve

android getView方法不執行的一個原因是佈局檔案沒有給列表顯示的位置

一個原因是佈局檔案中,沒有給列表顯示的位置。 例如:下面的佈局 <com.xxx.view.BaseListView         android:id="@+id/list_find"         android:layout_width="match_par

Android Studio Rendering Problems不能顯示xxx.xml佈局檔案

由於最近更新了android的SDK為22,然後開啟xxx.xml佈局檔案,發現以前都可以顯示,但是現在顯示不出來。 提示: Rendering Problems This version of the reading library is more recent than

【其他】Activity通過 ctrl+滑鼠單擊 直接連結到對應的xml佈局檔案,而不是開啟R檔案

寫在前邊,這篇文章的解決方案不完美,拆了東牆,補了西牆,先不刪,只當我自己參考使用吧,如果以後有機會了,搞個完美的方案。 電腦重灌系統了,順便體驗了一下一個沒用過的eclipse版本。 裝完adt,配好sdk,寫個demo測試下,還可以,介面都一樣,