2010-09-20 22 views
0

J'ai un fil qui télécharge des données à partir d'Internetandroid: gestionnaire d'un Runnable jette exception de pointeur nul

public class Bp implements Runnable 
{ 
Handler myHandler; 
public void setHandler(Handler myHandler) 
{ this.myHandler=myHandler; } 
.... 
myHandler.sendEmptyMessage (0); 
} 

Il y a une activité qui doit être mis à jour selon les données téléchargées.

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

Chaque fois que je lance le code ci-dessus je reçois Exception NullPointer Veuillez me aider à mettre à jour la vue.

+0

P.S. nommer les variables de classe et les variables temporaires mène à la confusion! – fredley

+0

fredley J'essaie d'utiliser "myHandler" de thread Bp à sendMessage à Activity Hp pour mettre à jour l'interface utilisateur. myHandler est juste déclaré en Bp Il est géré dans Activity Hp. J'espère que je suis dans la bonne direction. – 100rabh

+0

Résolu: Juste écrit le code soigneusement et ça a fonctionné – 100rabh

Répondre

-3

Résolu le problème en réécrivant le code parfaitement & cela a bien fonctionné. On a vu précédemment qu'il y avait des problèmes de configuration de Handler. Pouvons-nous avoir une trace de pile?

0

oui c'est correct. Vous créez le gestionnaire dans le thread BP ... mais vous devez le créer dans le contexte du thread principal ou de l'interface graphique s'exécutant dans l'activité HP car le MessageQueue du thread principal/de l'interface graphique est en question ici car vous êtes mise à jour avec les données reçues de l'autre thread.