今天同事跑來問我一些問題,我看到他的 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

經過這次聽別人的上課,我覺得收穫還不少,雖然自己去找資料可以完成一些功能面的工作,但系統底層還是要多多了解,這通常會受限於時間關係而無法進行,這時候聽別人上課可以有所吸收啊。


changyy 發表在 痞客邦 PIXNET 留言(0) 人氣()