今天同事跑來問我一些問題,我看到他的 code 馬上就猜出問題在哪 XD 明明同樣的 code 在其他範例可以跑,但此刻就是跑起來會看到 exception,是誰都會很火大吧 XD
解決方式?其實沒有正解 XD
狀況一:
現象:
public void onCreate(Bundle savedInstanceState) {
...
Button testBtn = (Button) findViewById( R.id.testBtn );
testBtn.setOnClickListener(this);
...
}
並且 layout/main.xml 中已經補好 Button 並且 id 為 testBtn 了,但很奇怪的跑上述程式會當掉,直到把 testBtn.setOnClickListener(this); 移除才 ok
解法:
去變動一下 layout ,例如在加個 textview 後再存檔,或許可以解決 XD
我之前為了這種問題,程式碼都改寫成:
Button testBtn = (Button) findViewById( R.id.testBtn );
if( testBtn )
testBtn.setOnClickListener(this);
但這只是避免 exception 罷了 :P 目前正解還不清處,或許真的只要重開 Eclipse 就能解決吧
狀況二:
現象:
使用 Worker thread 去做運算,並且完工後去更新 UI 部分,結果就是不正常,(有時)無法更新 UI
解法:
上過課後,我才明瞭這個問題!因為 Android UI is not thread-safe ,所以更新 UI 請統一交給 main thread 處理。這也是我在 Android 開發教學筆記 - 使用 Regular Expression、Network Connection 和 Thread 中曾碰到的問題,那時也只是誤打誤撞把更新 UI 的動作交還給 Handler 來解決。
嗯,目前太少開發,筆記僅有上述兩點 Orz
經過這次聽別人的上課,我覺得收穫還不少,雖然自己去找資料可以完成一些功能面的工作,但系統底層還是要多多了解,這通常會受限於時間關係而無法進行,這時候聽別人上課可以有所吸收啊。
沒有留言:
張貼留言