2013-02-16 41 views
3

Android 2.3.3。Android中ID的命名約定

我有一個關於命名Android中的ID的問題。

假設我在Activity1中有兩個按鈕(保存和取消)。我將它們命名爲(ID)爲btnSave和btnCancel。現在我有Activity2,我也有保存和取消按鈕。兩者都具有相同的功能。如果我將ID設爲btnSave和btnCancel,會發生什麼情況。

編譯時會出現問題嗎?當我按下時,R.id.和ctrl +空格,我會得到兩個btnSave和btnCancel(s)可供選擇嗎?

而且最重要的是,我爲什麼要爲它們命名不同,如果我應注意什麼?

回答

4

如果只有件事簡單的方法在代碼編寫,然後

你可以嘗試像,

button_save_<activity_or_layout_name> 
button_cancel_<activity_or_layout_name> 
(帶有活動或佈局XML文件前綴或後綴寫入按鈕的名稱)

但在運行時,您的按鈕ID始終由佈局視圖引用。您將其設置到您的活動setContentView()中。

更新:

假設在活性2使用的是帶有活性1佈局的ID按鈕,然後就可以得到NullPointerException異常爲您的按鈕是不是在目前的活性2引用。 (因爲你的Activity2有不同的佈局)。

+0

感謝您的信息! – 2013-02-16 11:43:57

2

在我看來,當你的名字的ID,你應該寫,將第一次使用他們,那麼該小工具的初始活動的名稱,最後不管它的功能是如loginBSave,loginBCancel,activity2BSave,activity2BCancel 反正它完全取決於你的程序員來命名他們,你可以從海誓山盟

0

區分它們對於我使用前綴佈局名稱的第一個字母佈局特定元素的方式。所以,如果我已經佈局命名爲show_task_layout.xml,它的元素將命名stl_button_ok

對於可能複製或出現在許多活動,我更喜歡使用一個名稱,而不前綴的具體內容。但是,如果按照這個方式在每個佈局將是一個頭疼的調試如果當你將不會被ID

1

多個活動之間共享相同的ID找到一個元素是沒有結果的,事實上,你甚至可以有相同的ID在同一活動中多次使用,沒有任何問題。在這種情況下,調用getViewById()將簡單地返回第一個View,它將在具有相同ID的同一層次結構中的許多Views中找到。

這種情況時相同的佈局需要從它的XML文件充氣多次通常發生。如果您需要查找共享相同ID的所有View,則必須在每次查找或給出不同的起點後,逐個更改每個View的ID(使用setId())。