Форум программистов, компьютерный форум CyberForum.ru

Can't create handler inside thread that has not called Looper.prepare() - Android

Восстановить пароль Регистрация
 
korshun84
13 / 68 / 14
Регистрация: 08.07.2014
Сообщений: 349
08.01.2015, 10:31     Can't create handler inside thread that has not called Looper.prepare() #1
Привет, с Новым Годом!

Подскажите почему приложение вылетает с ошибкой при показе progressdialog.

Ошибка:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
java.lang.RuntimeException: An error occured while executing doInBackground()
            at android.os.AsyncTask$3.done(AsyncTask.java:299)
            at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
            at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
            at java.util.concurrent.FutureTask.run(FutureTask.java:239)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
            at java.lang.Thread.run(Thread.java:856)
     Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
            at android.os.Handler.<init>(Handler.java:197)
            at android.os.Handler.<init>(Handler.java:111)
            at android.view.ViewRootImpl$ViewRootHandler.<init>(ViewRootImpl.java:2802)
            at android.view.ViewRootImpl.<init>(ViewRootImpl.java:3105)
            at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:216)
            at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)
            at android.app.Dialog.show(Dialog.java:303)
            at ru.korshun.cobaguardidea.app.Root$CheckDirectoryExist.onPreExecute(Root.java:962) //this.pd.show();
            at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586)
            at android.os.AsyncTask.execute(AsyncTask.java:534)
            at ru.korshun.cobaguardidea.app.Root$CheckDirectoryExist.doInBackground(Root.java:980)
            at ru.korshun.cobaguardidea.app.Root$CheckDirectoryExist.doInBackground(Root.java:942)
            at android.os.AsyncTask$2.call(AsyncTask.java:287)
            at java.util.concurrent.FutureTask.run(FutureTask.java:234)
            at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
            at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
            at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
            at java.lang.Thread.run(Thread.java:856)
Код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@Override
protected void onCreate(Bundle savedInstanceState) {
....
new CheckDirectoryExist(new ProgressDialog(this)).execute();
....
}
 
    class CheckDirectoryExist
            extends AsyncTask<Void, Void, Boolean> {
 
        private ProgressDialog pd;
 
        CheckDirectoryExist(ProgressDialog pd) {
            this.pd = pd;
 
            this.pd.setTitle(Root.PD_TITLE);
            this.pd.setMessage("Files indexing ...");
 
            this.pd.setCancelable(false);
        }
 
        @Override
        protected void onPreExecute() {
            this.pd.show(); //Дальше этого не идет
        }
}
Заранее благодарю!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.01.2015, 10:31     Can't create handler inside thread that has not called Looper.prepare()
Посмотрите здесь:

Handler и интервал времени Android
Про Handler и ProgressBar Android
Handler timer Android
Handler, поток не останавливается Android
Handler vs Service vs AsynkTask Android
Android Как вытащить данные из потока. Cant create handler inside thread that has not called Looper.prepare()
Android Работа с Handler из другого активити
Android Не работает Handler
Android Handler
Android Handler
Android Handler при пересоздании активити
Передать данные в работающий thread из другого thread Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
dajver
 Аватар для dajver
406 / 270 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
08.01.2015, 13:06     Can't create handler inside thread that has not called Looper.prepare() #2
Что то мне подсказывает что вы забыли инициализировать progressDialog. Где нибудь в конструкторе

Java
1
ProgressDialog pd = new ProgressDialog(this);
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
08.01.2015, 13:16     Can't create handler inside thread that has not called Looper.prepare() #3
Строка 4, в принципе, это сделала...
dajver
 Аватар для dajver
406 / 270 / 18
Регистрация: 18.09.2010
Сообщений: 1,106
08.01.2015, 13:22     Can't create handler inside thread that has not called Looper.prepare() #4
Цитата Сообщение от Armagedo Посмотреть сообщение
Строка 4, в принципе, это сделала...
не увидел)

Добавлено через 2 минуты
попробуйте перенести this.pd.show(); в конструктор

Java
1
2
3
4
5
6
7
8
9
 CheckDirectoryExist(ProgressDialog pd) {
            this.pd = pd;
 
            this.pd.setTitle(Root.PD_TITLE);
            this.pd.setMessage("Files indexing ...");
 
            this.pd.setCancelable(false);
            this.pd.show();
        }
akyma40
16 / 15 / 3
Регистрация: 20.05.2015
Сообщений: 103
30.05.2015, 20:54     Can't create handler inside thread that has not called Looper.prepare() #5
dajver, помогите мне, а то у меня тоже ошибка Can't create handler inside thread that has not called Looper.prepare() и не знаю как бороться...
вот код
Кликните здесь для просмотра всего текста
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public class NewThread implements Runnable {
    Thread thread;
 
    // konstruktor
    public NewThread() {
        // new potok
        thread = new Thread(this, "VKparser");
        thread.start();
    }
 
    public void run() {
        String httpString = "https://api.vk.com/method/users.get?user_id=205387401&v=5.32";
 
        HttpPost httppost = new HttpPost(httpString);
        HttpClient httpclient = new DefaultHttpClient();
 
        HttpResponse response;
 
        String responseBody;
 
        try {
 
            response = httpclient.execute(httppost);
            responseBody = EntityUtils.toString(response.getEntity());
            Log.d("!!!!!!!!!!!!!!!", responseBody);
            try {
                JSONObject jsonobject = new JSONObject(responseBody);
                JSONArray jsonarray = jsonobject.getJSONArray("response");
                jsonobject = jsonarray.getJSONObject(0);
                String name, famil;
                name = jsonobject.getString("first_name");
                famil = jsonobject.getString("last_name");
                Log.d("!!!", name);
                Log.d("!!!", famil);
                try {
                    MainActivity.getInstance().update();
                } catch (NullPointerException e) {
                    e.printStackTrace();
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
 
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

а вот код update() в MainActivity
Кликните здесь для просмотра всего текста
Java
1
2
3
public void update() {
        Toast.makeText(getBaseContext(), "YES ", Toast.LENGTH_LONG).show();
    }
Yandex
Объявления
30.05.2015, 20:54     Can't create handler inside thread that has not called Looper.prepare()
Ответ Создать тему
Опции темы

Текущее время: 20:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru