編輯:關於Android編程
今天在學習的過程中遇到了如標題的問題:@+id/和android:id用法的區別?
首先看代碼:
上述在代碼中,模擬器運行會發現出現異常:java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list.
接下來看Activity中代碼:
public class ListViewActivity extends ListActivity { @Overrided protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //如果使用了以下的layout文件則需要在此文件中假如ListView, 而且id一定為 @android:id/list //否則會報 Your content must have a ListView whose id attribute is 'android.R.id.list" 錯誤 //固定用法。如果沒有設置下面的layout,則自動使用默認的layout,不需定義listview setContentView(R.layout.listview); } }
注意這裡繼承的是ListActivity,不是原來的Activity。
ListActivity是一個綁定到一個數據源,並且用來顯示這一串數據的Activity。
ListActivity擁有一個listview對象來實現數據源的綁定與顯示,
通常會是一個array或者一個擁有查詢結果的cursor
ListActivity本身有一個默認的layout,其中包含一個全屏的list。
如果用默認的layout,你必須要在onCreate()中注釋掉setContentView()那一句。
但是如果你如果你想要定制自己的layout你可以創建一個你自己的layout文件,並且在onCreate()中調用
setContenttView()來指定這個layout.,
需要注意的是你自己的layout中必須要有一個id為"@android:id/list"的ListView,如上面的XML代碼。
正確的代碼:修改android:id="@id/android:list" ------修改----->android:id="@android:id/list",這樣模擬器就能運行起來。
下面通過查詢Android API文檔資料進行關於android:id="@../.."x相關用法說明記錄如下:
在Android系統中的組件需要用一個int類型的值來表示,這個值也就是組件標簽中的id屬性值。id屬性只接受資源類型的值,也就是必須以@開頭的值,例如,@id/result、@+id/user等。如果在@後面使用“+”,表示當修改完某個布局文件並保存後,系統會自動在R.java文件中生成相應的int類型變量。變量名就是“/”後面的值,例如,@+id/user會在R.java文件中生成int user = value(value是一個十六進制的數,例如在R.java中的public static final
int user=0x7f030003;)。
如果user在R.java中已經存在同名的變量,就不再生成新的變量,而該組件會使用這個已存在的變量的值。
如果使用@+id/name形式,當R.java中存在名為name變量時,則該組件會使用該變量的值作為標識。如果不存在該變量,則添加一個新的變量,並為該變量賦相應的值(不會重復)。
在Android系統中既然組件的id屬性是一個資源id就可以,那麼自然可以設置任何已經存在的資源id值,例如,@drawable/icon、@string/ok、@+string/you等。當然,也可以設置android系統中已存在的資源id,例如,我所遇到的@id/android:list,那麼這個android是什麼意思呢,實際上,這個android就是系統的R類(在R.java文件中)所在的package。
由於是初學者關於說明@+id/和android:id寫法的區別概述也許不是很准確到位,但這僅是記錄個人學習的過程。
本文實例講述了Android編程實現自定義ProgressBar樣式。分享給大家供大家參考,具體如下:效果圖如下,本例中設置了第一級進度條和第二級進度條。樣式資源:pro
有不少朋友都遇到過這種問題,程序執行時切換到後台,然後再重新進入會報異常,
先來看看效果圖先分析餅狀圖的構成,非常明顯,餅狀圖就是一個又一個的扇形構成的,每個扇形都有不同的顏色,對應的有名字,數據和百分比。經以上信息可以得出餅狀圖的最基本數據應包
為了使得一個程序能夠在同一時間裡處理許多用戶的要求。即使用戶可能發出一個要求,也肯能導致一個操作系統中多個進程的運行(PS:聽音樂,看地圖)。而且多個進程間需要相互交換、