android:来自Runnable的处理程序引发空指针异常

android:来自Runnable的处理程序引发空指针异常,android,handler,runnable,Android,Handler,Runnable,我有一个从互联网下载数据的线程 public class Bp implements Runnable { Handler myHandler; public void setHandler(Handler myHandler) { this.myHandler=myHandler; } .... myHandler.sendEmptyMessage (0); } 有一个活动需要根据下载的数据进行更新 public class Hp extends Activity implements Ru

我有一个从互联网下载数据的线程

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 ();
   }
  }
};

每当我运行上述代码时,都会出现空指针异常。请帮助我更新视图。

是的,这是正确的。您正在BP线程中创建处理程序。。但是,您需要在HP活动中运行的主线程或GUI线程的上下文中创建它,因为当您使用从另一个线程接收的数据更新主线程或GUI线程的MessageQueue时,此处存在问题。

通过整齐地重写代码解决了此问题&它工作正常。似乎在设置之前存在问题处理程序。

我们可以进行堆栈跟踪吗?另外,将类变量和临时变量命名为相同会导致混淆!fredley我正在尝试使用Bp线程的“myHandler”向活动Hp发送消息以更新UI。myHandler只是在Bp中声明的,它是在活动Hp中处理的。我希望我的方向是正确的。问题解决了:只要把代码写得干净利落就行了