1. 程式人生 > >子執行緒如何非同步更新Fragment的UI介面

子執行緒如何非同步更新Fragment的UI介面

請問:我在登入介面中登入成功後,非同步執行了執行緒類,該類作用是:從網路上獲取了相關資訊,讀取後
通過Handler通知Fragment_Contacts介面!


public class LoadFriendDb extends Thread {
:
:
:
android.os.Message msg = Fragment_Contacts.HandlerListen.obtainMessage();
msg.what = 0;
msg.sendToTarget();
}



public class Fragment_Contacts extends Fragment {
public View onCreateView(.....)
{
:
:
// 監聽UI handler
HandlerListen = new Handler() {
public void handleMessage(android.os.Message msg) {
String[] args = (String[]) msg.obj;
switch (msg.what) {
case 0:// 重新整理
res();
break;
default:
break;
}
}

};
}
:
:
:
}

但是問題來了,由於非同步執行了執行緒,時間是不一定的!有時候執行緒執行完畢了!但是操作介面沒有停留在
Fragment_Contacts時就會報錯:“空指標”!

如果登陸後馬上切換到Fragment_Contacts介面,則正常!
但是實際上這種操作是不靠譜的,因為該Fragment只是其中一個而已。 我懷疑是執行緒執行後,而Fragment由於沒有切換過去,所以還沒有載入完畢!

我想得到的效果就是執行緒能夠正常執行,介面不需要停留在指定的Fragment上面!如果停留了,也能看非同步看到資訊更新了!

希望能給例子說明一下,或者說說思路,給點重要方法函式等,謝謝各位。