2011-07-18 15 views
1

私はすべてのコードでうまく動作するゲームActivity(アクティビティA)を持っています。`継承アクティビティでハンドラを作成できません... Looper.prepare()`

Can't create handler inside thread that has not called Looper.prepare():それから私はextendsアクティビティA.しかし、トーストラインに遭遇したとき、活動Bが突然例外を(活動Aがうまくトーストを示す作品)スローされたことを、私の新しいゲームモード用の新Activity(アクティビティB)を作成します

アクティビティBは、負荷レベルメソッドのみをオーバーライドします。問題を処理するための簡単な方法があるかもしれません

Handler innerHandler; 

(new Thread(new Runnable() { 

      @Override 
      public void run() { 
       Looper.prepare(); 

       innerHandler = new Handler() { 
        @Override 
        public void handleMessage(Message message) { 
         Toast.make(...); 
        } 

        @Override 
        public void dispatchMessage(Message message) { 
         handleMessage(message); 
        } 
       }; 

       Message message = innerHandler.obtainMessage(); 
       innerHandler.dispatchMessage(message); 
       Looper.loop(); 
      } 
     })).start(); 

答えて

9

はこれを試してみてください。 Android – Multithreading in a UI environmentのドキュメントを参照してください。

+0

非常に便利です!どうもありがとうございました。私は私の問題を解決した:) –

+0

私は同じ問題で昨日苦労した。私は幸せでした(: –

+0

@OnuraySahin私はこの答えが長いこと前から知っているが、私はそれが非常に有益であることを知っていましたが、 'this Handler class静的でなければならないか、リークが発生する可能性があります。ただし、静的にすると、トーストのコンテキストにアクセスできないということを意味します。 – Deena

関連する問題