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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
alexenl
0 / 0 / 0
Регистрация: 10.05.2014
Сообщений: 27
#1

Отмена AsyncTask из FragmentDialog - Программирование Android

06.08.2014, 15:18. Просмотров 588. Ответов 1
Метки нет (Все метки)

Здравствуйте, у меня задача отменить выполнение AsyncTask`a из диалога, который создается в этом таске.
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
new AsyncTask<Void, Void, Void>() {
            @Override
            protected void onPreExecute() {
                final DialogFragment dlg = DialogLoading.setTitle("Выполняется вход");
                dlg.show(getFragmentManager(),"dlg"); //вот из этого диалога, если пользователь нажал "отмена" нужно завершить выполнение asyncTask.
            }
 
            @Override
            protected Void doInBackground(Void... voids) {
                dogHt = GhTData.ConnectBud(login, password);
                this.onCancelled();
                return null;
            }
 
            @Override
            protected void onPostExecute(Void result) {
                if (dogHt) {
                    goToTheOtherActivity();
                } else {
                    errorMsg();
                }
            }
 
            @Override
            protected void onCancelled(Void result) { //вызывается вместо onPostExecute(Object) если был вызван метод отмены
                super.onCancelled(result);
                Log.d("tag", "onCancelled(Void) finish");
            }
 
            @Override
            protected void onCancelled() {
                super.onCancelled();
                Log.d("tag", "Cancel");
            }
        }.execute();
Код диалога:
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
public class DialogLoading extends DialogFragment {
    static DialogLoading setTitle(String myTitle) {
        DialogLoading f = new DialogLoading();
        Bundle args = new Bundle();
        args.putString("title", myTitle);
        f.setArguments(args);
        return f;
    }
 
    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        String myTitle = getArguments().getString("title");
        AlertDialog.Builder adb = new AlertDialog.Builder(getActivity())
                .setTitle(myTitle).setMessage("Пожалуйста, подождите.")
                .setNegativeButton("Отменить", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                        
                        //Вот тут как-то нужно вызвать отмену выполнения таска. Не пойму, как. 
 
                        dialog.cancel();
                    }
                });
        return adb.create();
    }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.08.2014, 15:18     Отмена AsyncTask из FragmentDialog
Посмотрите здесь:

Отмена AsyncTask - Программирование Android
Привет. Есть такой код: @Override protected Void doInBackground(Void... params) { try { Interpret(Source.get()); }...

AsyncTask - Программирование Android
Использую AsyncTasc class MyT extends AsyncTask&lt;Void, Void, Void&gt; { @Override protected Void doInBackground(Void......

AsyncTask - Программирование Android
Здравствуйте, при использовании двух одинаковых методов получается разный результат. AsyncTask в одном случае успешно передает данные в...

AsyncTask - Программирование Android
Привет. Знаю, что в AsyncTask doInBackground() обращатся к компонентам UI нельзя. Когда я пытаюсь обновить вывод (в EditText) в...

AsyncTask и get() - Программирование Android
Создаю асинхронный процесс, где в onPreExecute() запускаю анимированный ProgressDialog. После выполнения задачи нужно выполнить действия....

MainActivity AsyncTask - Программирование Android
Добрый вечер. Ребята тут небольшая проблема. Мне нужно Заполнить NavigatorDrawer (из базы). Почему когда я пытаюсь в...

Exception в AsyncTask - Программирование Android
Доброго всем. Проблема вот в чем: периодически во время выполнения одного из потоков в AsyncTask вылетает следующее: 04-21...

AsyncTask тормозит - Программирование Android
Подскажите пожалуйста, делалю загрузку данных с сервера через asyncTask и возвращаются результат, а дальше делаю обработку этих данных во...

AsyncTask+CheckBox - Программирование Android
Здравствуйте, интересует вопрос нужно в функцию AsyncTask послать несколько строк, в зависимости какие Чекбоксы чекнуты. Ну например: ...

Работа с AsyncTask - Программирование Android
Попробовал использовать AsyncTask и возник вопрос. У меня есть несколько ф-й, которые парсят текстовые файлы и заполняют таблицы БД. ...

AsyncTask и SQLite - Программирование Android
Здравствуйте! У меня в приложении есть БД SQLite, при нажатие на кнопку загрузки, приложение начинает в базу вносить записи. Структура...

Не работает AsyncTask - Программирование Android
Не работает AsyncTask , вот код: private void registerInBackground() { new AsyncTask() { @Override ...


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1566 / 1308 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
06.08.2014, 15:41     Отмена AsyncTask из FragmentDialog #2
onCanceled() это событие, вызываемое асинк таской. А Вы его руками вызываете. Убить её - cancel().

Я бы передал в диалог ссылку на асинк-таск (хотя это всё равно антипаттерн) и вызвал бы у неё cancel() когда нужно
Yandex
Объявления
06.08.2014, 15:41     Отмена AsyncTask из FragmentDialog
Ответ Создать тему
Опции темы

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