Форум программистов, компьютерный форум, киберфорум
Наши страницы

Дождаться завершения работы AsyncTask и выполнять код дальше - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Размер кнопок http://www.cyberforum.ru/android-dev/thread1447800.html
Подскажите как начинающему, плиз) Во-первых, я не использую .9png . Для оформления кнопок использую отрисованные бэкграунды. Допустим меня устраивает размер кнопки по размеру бэкграунда, я...
Программирование Android Вылетает программа, написанная под Андроид Программа под Android Вылетает когда работает на переднем плане. Когда работает в фоновом то не вылетает) На сринах видно как программа загружает ОЗУ и Процессор, Подскажите из за чего?? И как это... http://www.cyberforum.ru/android-dev/thread1447663.html
Программирование Android Unknown error (code 14): Could not open database
Подскажите пожалуйста. в чем ошибка, видно что не открывается БД, но из-за чего это, и правильно ли прочитал лог? : E/AndroidRuntime(23119): FATAL EXCEPTION: main : E/AndroidRuntime(23119):...
Вывод из базы данных в ListView через SimpleCursorAdapter Программирование Android
Доброе время суток. Пишу программу под Андроид в среде Android Studio и возникла проблема с выводом данных в listview через SimpleCursorAdapter. Суть: программа сохраняет результаты проверки в БД,...
Программирование Android Ошибка при нажатии на кнопку http://www.cyberforum.ru/android-dev/thread1447530.html
package ru.test.gthen; import android.app.*; import android.os.*; import android.view.*; import android.widget.*; import java.util.Random; import android.content.*; import...
Программирование Android Сохранение состояния Checkbox в Listview Возникла проблема с сохранением состояния checkbox'ов в Listview. Listview состоит из текста, напротив которого стоит чекбокс. Требуется чтобы перед закрытием приложения все состояния чеков... подробнее

Показать сообщение отдельно
7Alex
216 / 0 / 1
Регистрация: 24.06.2014
Сообщений: 144

Дождаться завершения работы AsyncTask и выполнять код дальше - Программирование Android

16.05.2015, 09:58. Просмотров 683. Ответов 5
Метки (Все метки)

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

Вот код класса, расширяющий AsyncTask, и, добавляющий слушатель для него:
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
public class MyTest extends AsyncTask<Object, Object, Object>
{
    public interface MyListener
    {
        public void onCancel();
        public void onFinish();
    }
    
    public MyListener myListener;
    
    public MyTest(MyListener listener) // Мне нужно, чтобы класс мог реализовывать интерфейс,
    {
        myListener = listener;
    }
    
    public void setMyListener(MyListener listener) // а мог и не реализовывать.
    {
        myListener = listener;
    }
    
    @Override
    protected void onCancelled(Object result)
    {
        super.onCancelled(result);
    }
    
    @Override
    protected void onCancelled()
    {
        super.onCancelled();
        if (myListener != null)
        {
            myListener.onCancel();
        }
    }
    
    @Override
    protected void onPreExecute()
    {
        super.onPreExecute();
    }
    
    @Override
    protected Object doInBackground(Object... params)
    {
        return params;
    }
    
    @Override
    protected void onProgressUpdate(Object... progress)
    {
        super.onProgressUpdate(progress);
    }
    
    @Override
    protected void onPostExecute(Object result)
    {
        super.onPostExecute(result);
        if (myListener != null)
        {
            myListener.onFinish();
        }
    }
}
Вот код рабочего класса:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
public class Work extends MyTest
{
    private String T;
    
    @Override
    protected Boolean doInBackground(Object... params)
    {
        Boolean result = false;
        if (params.length == 1)
        {
            T = params[0].toString();
        }
        result = requestToTheServer();
        return result;
    }
        
    private boolean requestToTheServer()
    {
        boolean test = false;
        // Здесь код работы с сервером, здесь я и использую переменную T
        return test;
    }
}
Вот код вызова рабочего класса из третьего класса:
Java
1
2
3
4
5
6
7
8
9
String T = "test";
Work work = new Work();
work.setMyListener(
new MyTest.MyListener(
    public void onFinish()
    {
    }
));
work.execute(T);
И вот в последнем кусочке кода у меня ошибки (на четвёртой строчке у меня ошибка Cannot instantiate the type MyTest.MyListener - незя содать создать тип MyTest.MyListener), код не компилируется, и я не знаю, как правильно сделать. Помогите, пожалуйста. Что я делаю не так?

И ещё хотел спросить, как параметризовать класс MyTest, то есть как сделать вот так: public class MyTest<Object, Object, Object> extends AsyncTask<Object, Object, Object>, чтобы какие типы были у класса MyTest, такие и у AsyncTask?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru