Spinner 1 由SDK引發的問題

2021-08-25 23:55:10 字數 1732 閱讀 7288

spinner 類似 widget,sdk_api 文件上面有這樣一句話:

spinner is a widget similar to a drop-down list for selecting items.照著官網的例子,先給沒用過spinner的同志掃掃盲,step by step 吧!

1. 新建專案 spinnerusedresources

這個名稱主要是想說明該專案,用的是現有資源,即靜態建立 spinner所需資源。

2. main.xml

<?xml version="1.0" encoding="utf-8"?>3. strings.xml

該檔案位於專案 /res/values 下,具體**:

<?xml version="1.0" encoding="utf-8"?> hello world, spinnerusedresourcesactivity!

choose a planet

mercury

venus

earth

mars

jupiter

saturn

uranus

neptune

說明以下,在該檔案中標籤用來宣告string陣列,該陣列的名稱是planets_array(有了名字我們就可以在**中呼叫它!)當然你也可以在**中自己new string[ ] ,隨你便。

另外,還可以獲得陣列的值:

resources res = getresources(); string planets = res.getstringarray(r.array.planets_array);

4. activity**5. 執行

soory,程式異常終止!看看log,說spinner是nullpointer!怎麼可能呢?糾結了一會,debug、看原始碼,都沒有找到答案。嗚呼!

木有辦法,在main.xml檔案中修改 spinner的id,然後執行,居然ok!最終,我又將main.xml檔案中的spinner的id改為spinner,執行也沒錯。暈!

效果圖:

6. 思考

既然在strings.xml檔案可以宣告陣列,那麼還有沒有其它辦法建立陣列呢?

答案是肯定的。

在/res/values下,新建android xml檔案arrays.xml。

**內容如下:

<?xml version="1.0" encoding="utf-8"?> mercury

venus

earth

mars

jupiter

saturn

uranus

neptune

注意,該陣列名稱是planets_array2,在spinnerusedresourcesactivity**oncreate方法中作如下修改:

arrayadapteradapter = arrayadapter.createfromresource( this, r.array.planets_array2, android.r.layout.******_spinner_item);執行效果是一樣的。

關於動態新增spinner內容,關注下篇部落格。

感謝:sdk-path/docs/resources/tutorials/views/hello-spinner.html

由 引發的思考

前陣子在乙個移動專案中,通過 的方式 繫結click 事件來提交乙個表單,由於表單資訊比較敏感,於是採用的post 同步提交的方式,原本到也沒有什麼。後來萬惡的pm說 你這個按鈕呀,要固定在底部比較好 於是乎就通過 position fixed 固定到底部了。那麼,問題來了 在ios 下,虛擬鍵盤是...

由Typedef引發的問題

由typedef 引發的問題 自 用來宣告乙個別名,typedef 後面的語法,是乙個宣告。本來筆者以為這裡不會產生什麼誤解的,但結果卻出乎意料,產生誤解的人不在少數。罪魁禍首又是那些害人的教材。在這些教材中介紹 typedef 的時候通常會寫出如下形式 typedef int para 這種形式跟...

由mmap引發的SIGBUS

一直以來都覺得使用mmap讀檔案是非常高效 非常優雅的做法 參見 從 read 看系統呼叫的耗時 mmap之後,就可以通過記憶體訪問的方式訪問到檔案裡的內容,省去了read這樣的系統呼叫。卻不曾想過,mmap以後,如果讀檔案出錯會發生什麼 今晚看到一篇介紹apache bug的文章,裡面說到,apa...