我有一个从互联网下载数据的线程
public class Bp implements Runnable
{
Handler myHandler;
public void setHandler(Handler myHandler)
{ this.myHandler=myHandler; }
....
myHandler.sendEmptyMessage (0);
}
有一项活动需要根据下载的数据进行更新。
public class Hp extends Activity implements Runnable
{
....
public Handler myHandler = new Handler() {
public void handleMessage(Message msg) {
//TODO handle myHandler from "Bp" Thread
//TODO remove Queue's View
if(m_adapter2.getCount ()==6)
{
m_adapter2.remove (queue); //removing view named queue from adapter
m_adapter2.notifyDataSetChanged ();
}
}
};
每当我运行上面的代码时,我都会得到NullPointer异常。请帮我更新视图。
答案 0 :(得分:0)
是的,这是正确的。您正在BP线程中创建处理程序..但您需要的是在HP活动中运行的主线程或GUI线程的上下文中创建它,因为主/ GUI线程的MessageQueue在这里是有问题的,因为你是用从其他线程收到的数据更新它。
答案 1 :(得分:-3)
通过巧妙地重写代码解决了这个问题。它运作良好。之前的问题是设置Handler的问题。