Показать диалог из фоновой цепочки - проблема - PullRequest
1 голос
/ 06 июля 2011

В моем приложении при копировании файлов я хочу спросить пользователя, хочет ли он перезаписать файл с тем же именем, пропустить и т. Д. Вот некоторый код из потока:

        if(target.exists()){
            synchronized(this){
                while(wait){
                    try{
                        popupHandler.sendMessage(popupHandler.obtainMessage(0, target));
                        wait();
                    }catch (Exception e){
                        e.printStackTrace();
                    }
                }
            }
        }

Вот мой обработчик:

    Handler popupHandler = new Handler(){
        @Override
        public void handleMessage(Message m){
            c.showConfirmDialog("The file " + ((File)m.obj).getName() + " exists. What do you want to do?",
                    "Overwrite", "Skip", "Keep both", Explorer.PASTE_CONFIRM, null);
        }
    };

После выбора опции в диалоге что-то подобное называется:

public void resume(){
    synchronized(copyThread){
            copyThread.wait = false;
            copyThread.notify();
        }
}

И тут возникает проблема. CopyThread в resume () всегда имеет значение null. Я не могу найти, что не так, потому что та же схема с приостановкой потока работает в моем другом классе. Похоже нить умирает после отправки сообщения: / Есть идеи? Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...