子线程如何异步更新Fragment的UI界面

来源:互联网 发布:sql创建索引 编辑:程序博客网 时间:2024/06/05 01:11
请问:我在登录界面中登录成功后,异步执行了线程类,该类作用是:从网络上获取了相关信息,读取后
通过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上面!如果停留了,也能看异步看到信息更新了!

希望能给例子说明一下,或者说说思路,给点重要方法函数等,谢谢各位。
0 0