2013-06-25 3 views
0

Я новичок в android. Создание приложения, для которого необходимо выполнить некоторые задачи в фоновом режиме. Следующее - это фрагмент кода.AsynTask Разработка Android: проблема с передачей параметра в AsyncTask

public class YQL extends AsyncTask <List,Void,List> 
{ @Override 
    protected List doInBackground(List... Suggestions) { 
       //doing some stuff using Suggestions[0] 
    }  
} 

У меня есть объект класса List, который, mySuggestions, что мне нужно пройти в асинхронном задачу. Но поскольку задача async принимает только массивы в качестве входных данных, я пробовал следующее.

YQL yqlMain = new YQL(); 
List[] temp = null; 
temp[0] = mySuggestions 
yqlMain.execute(temp); 

Не работает. Ошибка: нулевой указатель: переменная temp может быть только нулевой. Любые предложения?

+1

Абхи - это действительно код? Я сомневаюсь, что вы понимаете о фоновых процессах, но все же пропустите, что массивы в java исправлены, поэтому, если вы объявите его null, вы не можете ссылаться на что-либо в нем, особенно следующую строку – quinestor

ответ

0

temp является пустым, но вы вызываете операцию в ней. Это дает NullPointerException.

Следующий код должен делать трюк (непроверенные)

public class YQL extends AsyncTask <String,Void,List> 
{ 
    @Override 
    protected List doInBackground(String... Suggestions) { 

    }  
} 

Исполнение:

YQL ygl = new YQL(); 
ygl.Execute("Suggestion 1", "Suggestion 2") 
0

Вы делаете это неправильно .. сделать что-то вроде

List temp = new ArrayList(); 
temp.add(mySuggestions); 
yqlMain.execute(temp); 
0
new DownloadFilesTask().execute(url1, url2, url3); 

Тогда

private class DownloadFilesTask extends AsyncTask<URL, Integer, Long> { 
.. 
.. 
} 

Проверить эту ссылку: AsyncTask

Смежные вопросы