Я разрабатываю приложение, в котором мне нужно отправить значение результата метода onPostExecute asynctask в предыдущее действие, то есть активность, в которой задача aync вызывается.pls помещают некоторые коды. Anyhelp ценятсякак передать результат asynctask onpostexecute метода в родительскую активность android
ответ
два способов:
- Объявите класс, расширяющий AsyncTask в качестве частного класса в родительской деятельности
- Pass Handler или самой деятельности как пары класса, простирающихся AsyncTask
Если бы я тебя , Я бы выполнил первый вариант.
Посмотрите на DOCS:
class MyActivitySubclass extends Activity {
function runOnPostExecute(){
// whatever
}
private class MyTask extends AsyncTask<Void, Void, Void> {
void doInBackground(Void... params){
// do your background stuff
}
void onPostExecute(Void... result){
runOnPostExecute();
}
}
}
Примечание 1
код помещается в тело функции onPostExecute
уже работает на активность потока, следует лишь упомянуть, что this
ключевых слов приводит к MyTask.this
и не MyActivitySubclass.this
Метод onPostExecute запускается в основном потоке пользовательского интерфейса, поэтому все, что делается там, уже есть в вызове AsyncTasks.
http://developer.android.com/reference/android/os/AsyncTask.html
Хорошо, если ваш AsyncTask является внутренним классом, вы можете просто вызвать метод в своей деятельности от onPostExecute()
:
public class MyActivity extends Activity {
public void someMethod(String someParam) {
// do something with string here
}
public class InnerTask extends AsyncTask<...> {
protected void onPostExecute(result) {
someMethod(Send parameters);
}
}
}
Огня события в OnPostExecute.
Его добавление к ответу Марека Себеры, он указал на использование обработчика. Чтобы код был прост и интуитивно понятен, используйте интерфейс. Это не чуждое понятие, мы постоянно используем его для функций обратного вызова (например, OnClickListner и т. Д.). Код будет выглядеть примерно так.
public class InnerTask extends AsyncTask<...>
{
interface ResultHandler
{
void gotResult(<> result);
}
private ResultHandler myResult;
//constructor
public InnerTask(....params...,ResultHandler callback)
{
...
this.myResult = callback;
}
protected void onPostExecute(<>result)
{
...
myResult.gotResult(result);
}
}
public class MyActivity extends Activity implements InnerTask.ResultHandler
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
//do something
//if you want the InnerTask to execute here
InnerTask i = new InnerTask(....params...,this); //send 'this' as parameter
i.execute();
}
@Override
public void gotResult(<> result)
{
//from onPostExecute
}
}
Если мы хотим использовать один и тот же класс AsynTask на нескольких сайтах, мы можем использовать этот тип реализации вместо использования вложенной реализации классов.
- 1. AsyncTask внутри onPostExecute AsyncTask?
- 2. Как получить ответ в onPostExecute() AsyncTask android
- 3. Вызов метода onResume() из метода onPostExecute() Asynctask
- 4. Использование метода setter в AsyncTask onPostExecute
- 5. Ссылка на новую активность usin AsyncTask onPostExecute?
- 6. Показать предупреждениеДиалог onPostExecute AsyncTask Android
- 7. AsyncTask onPostExecute не возвращает результат из doInBackground
- 8. Android AsyncTask onPostExecute называется поздно?
- 9. ProgressBar в AsyncTask - показ после метода onPostExecute
- 10. Невозможно запустить новую активность из метода onPostExecute в Android
- 11. Android AsyncTask не вызывает onPostExecute
- 12. AsyncTask, обрабатывать результат onPostExecute vs get()
- 13. Переопределение onPostExecute() в AsyncTask
- 14. AsyncTask внутри onPostExecute другой Asynctask и вернуть результат
- 15. Вызов другой AsyncTask из метода onPostExecute
- 16. Android: setResult не возвращает результат в родительскую активность
- 17. Создание окна в onPostExecute() AsyncTask в android
- 18. Пользовательский интерфейс пользователя зависает в onPostExecute AsyncTask?
- 19. AsyncTask onPostExecute с интерфейсом
- 20. Android, AsyncTask, onProgressUpdate и onPostExecute не вызываются
- 21. Android - Как передать интерфейс AsyncTask
- 22. Ошибка в AsyncTask onPostExecute
- 23. Начиная AsyncTask в onPostExecute
- 24. Переопределить onPostExecute() в AsyncTask
- 25. как я могу вернуть свою родительскую активность в Asynctask
- 26. AsyncTask onPostExecute слушатель
- 27. Android Finish() Активность в Asynctask
- 28. NPE в OnPostExecute() AsyncTask
- 29. AsyncTask не вызывая onPostExecute
- 30. Mock AsyncTask onPostExecute()
Проблема OP, очевидно, подкласс AsyncTask, объявленный как открытый класс в отдельном файле. Он уже знает, что такое 'onPostExecute', используемый для –