2017-12-28 28 views
-1

SongList Code in the image実際にエラーが何であるのか、なぜ発生したのか理解できません。java.lang.RuntimeException:Looper.prepare()エラーを呼び出さなかったスレッド内でハンドラを作成できません。エラー

W/System.err: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 
W/System.err:  at android.os.Handler.<init>(Handler.java:200) 
W/System.err:  at android.os.Handler.<init>(Handler.java:114) 
W/System.err:  at android.app.Activity.<init>(Activity.java:754) 
W/System.err:  at android.app.ListActivity.<init>(ListActivity.java:175) 
W/System.err:  at com.example.vipul.finalproject.PlayListActivity.<init>(PlayListActivity.java:0) 
W/System.err:  at com.example.vipul.finalproject.SongList.scanSongs(SongList.java:296) 
W/System.err:  at com.example.vipul.finalproject.activities.ActivityMenuMain$ScanSongs.doInBackground(ActivityMenuMain.java:299) 
W/System.err:  at com.example.vipul.finalproject.activities.ActivityMenuMain$ScanSongs.doInBackground(ActivityMenuMain.java:289) 
W/System.err:  at android.os.AsyncTask$2.call(AsyncTask.java:295) 
W/System.err:  at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
W/System.err:  at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
W/System.err:  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
W/System.err:  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
W/System.err:  at java.lang.Thread.run(Thread.java:818) 

答えて

-1

The best explanation on why。マルチスレッドでは、他のタスクを実行中にアプリケーションタスクが来ることがあります。

+0

私の答えで私のコメントを読んでください。あなたの答えは質問に対処するのではなく、あなたの答えはほとんど説明のないリンクから成っています。 –

2

全体Looper/Handler関係を理解するためにthis articleを参照してください。

かいつまんで、あなたのThread#run()方法はそうのような構造に従わなければなりません:あなたが指示し、それらを実行するための別のスレッドを保存するために、1つのスレッド上ルーパーが必要

new Thread(new Runnable() { 
    @Override 
    public void run() { 
     Looper.prepare(); 
     mHandler = new Handler(); 
     Looper.loop(); 
    } 
}).start(); 
+0

このコードはどこに置かれますか? –

+0

これで、スタックトレース全体を共有するようになったので、SongList.java:296に 'Activity'(' PlayListActivity')を作成しようとしているようです。 'New'を使って' Activity'を作成することはできません(手動で 'Activity'を作成することはできません。あなたは' Intent'を使う必要があります)。 296行目で 'SongList#scanSongs()'メソッドを共有できますか? –

+0

SongList –

関連する問題