Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 17
1

AsyncTask

04.03.2015, 15:12. Просмотров 464. Ответов 2
Метки нет (Все метки)

Здавствуйте! У меня такой вопрос как вытащить переменную из 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
 public class MainActivity extends Activity {
 
  MyTask mt;
  TextView tvInfo;
  String qwerty;
 
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
 
    tvInfo = (TextView) findViewById(R.id.tvInfo);
  }
 
  public void onclick(View v) {
    mt = new MyTask();
    mt.execute();
    
    tvInfo.setText(qwerty);
 
  }
 
  class MyTask extends AsyncTask<Void, Void, String> {
 
    @Override
    protected String doInBackground(qwerty) {
 
    qwerty = "123";
 
    return qwerty;
    }
 
    @Override
    protected void onPostExecute(Void result) {
      super.onPostExecute(result);
    }
  }
}

tvInfo.setText(qwerty); - эту строку надо сделать не в onPostExecute, а в основном классе. Если это делается как то по другому, подскажите пожалуйста.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.03.2015, 15:12
Ответы с готовыми решениями:

Ожидание завершения работы AsyncTask
Здравствуйте! Есть функция. В ней запускаю работу класса AsyncTask. В этой же функции дожидаюсь...

AsyncTask
Использую AsyncTasc class MyT extends AsyncTask&lt;Void, Void, Void&gt; { @Override...

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

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

2
1602 / 1334 / 291
Регистрация: 25.10.2009
Сообщений: 3,487
Записей в блоге: 2
04.03.2015, 15:31 2
Sen1k, правильно делать через callback:

1. Интерфейс

Java
1
2
3
4
5
public interface IAsyncListener {
 
    void onResult(String result);
 
}
2. Модифицируем таску

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class MyTask extends AsyncTask<Void, Void, String> {
 
        private IAsyncListener listener;
 
        public MyTask(IAsyncListener listener) {
            this.listener = listener;
        }
 
        @Override
        protected String doInBackground(Void... params) {
            return "qwerty";
        }
 
        @Override
        protected void onPostExecute(String s) {
            super.onPostExecute(s);
            if (listener != null) {
                listener.onResult(s);
            }
        }
    }
3. Тогда вызов будет следующим:

Java
1
2
3
4
5
6
7
 MyTask mt = new MyTask(new IAsyncListener() {
                @Override
                public void onResult(String result) {
                          tvInfo.setText(result);              
                }
            });
            mt.execute();
1
0 / 0 / 0
Регистрация: 19.09.2013
Сообщений: 17
04.03.2015, 15:46  [ТС] 3
Спасибо, домой приду попробую
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
04.03.2015, 15:46

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

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

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

AsyncTask ObjectAnimator
Добрый вечер. Прошу помочь мне. Пытаюсь написать карточную игру. В игре игрок выбирает две карты,...

MainActivity AsyncTask
Добрый вечер. Ребята тут небольшая проблема. Мне нужно Заполнить NavigatorDrawer (из базы)....


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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