在fragment 定义Handler 然后在handler使用runOnUiThread报错
时间: 2024-03-22 17:39:10 浏览: 236
如何在android app调用webservice的示例源码
在Fragment中定义Handler并在Handler中使用runOnUiThread方法应该是没有问题的,因为Handler是运行在UI线程中的。但是如果你在Handler中使用runOnUiThread方法时出现了错误,可能是因为你没有正确获取Activity对象。
在Fragment中,可以通过getActivity()方法获取到它所依附的Activity对象,然后再调用Activity的runOnUiThread方法来更新UI。但是需要注意的是,如果Fragment还没有与Activity关联(即onAttach方法还没有被调用),那么调用getActivity()方法将返回null,此时需要避免调用runOnUiThread方法。
另外,如果你在Fragment中定义的Handler需要更新UI,也可以直接使用Fragment的getView()方法获取到它所关联的视图对象,然后再调用视图对象的post或postDelayed方法来更新UI。例如:
```
Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
View view = getView();
if (view != null) {
view.post(new Runnable() {
@Override
public void run() {
// 在UI线程中更新UI
}
});
}
}
};
```
这样可以避免在获取Activity对象时出现的空指针异常。
阅读全文