0

インターネットからデータをダウンロードするスレッドがあります

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

上記のコードを実行すると、NullPointerExceptionが発生します。ビューの更新を手伝ってください。

4

2 に答える 2

0

それは正解です。BPスレッドでハンドラーを作成していますが、必要なのは、HPアクティビティで実行されているメインスレッドまたはGUIスレッドのコンテキストでハンドラーを作成することです。これは、メイン/GUIスレッドのMessageQueueが問題になっているためです。他のスレッドから受信したデータで更新します。

于 2010-10-20T22:50:16.733 に答える
-3

コードをきちんと書き直すことで問題を解決し、うまく機能しました。以前は、ハンドラーの設定に問題があったようです。

于 2010-12-01T07:03:44.713 に答える