Я пытаюсь установить мой AsyncTask возвращающегося пользовательского типа класса, такие какПочему AsyncTask не принимает мой класс как возвращаемый параметр?
AsyncTask<Void, Void, MyClass>
Для этого я создал класс пользователя. Файл: User.java
package com.asynctask.namespace;
import java.util.ArrayList;
public class User
{
private ArrayList<String> name;
public void addName(String value)
{
name.add(value);
}
public String getName(int pos)
{
return name.get(pos).toString();
}
}
В моей основной деятельности у меня есть:
package com.asynctask.namespace;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.TextView;
public class AsyncTaskExampleActivity extends Activity {
private TextView result;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
result = new TextView(this);
setContentView(result);
new loadData().execute();
}
// --- Subclass --- //
private class loadData extends AsyncTask<Void, Void, User>
{
ProgressDialog progDialog;
User client = new User();
protected void onPreExecute()
{
progDialog = new ProgressDialog(AsyncTaskExampleActivity.this);
progDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDialog.setMessage("Conectando a base de dados...");
progDialog.show();
}
protected User doInBackground(Void... args)
{
client.addName("testName");
return client;
}
protected void onPostExecute(User values)
{
progDialog.dismiss();
result.setText(values.getName(0));
}
}
}
я получаю следующие ошибки LogCat:
04-02 13:45:05.683: W/dalvikvm(1056): threadid=15: thread exiting with uncaught exception (group=0x4001b188)
04-02 13:45:05.683: E/AndroidRuntime(1056): Uncaught handler: thread AsyncTask #1 exiting due to uncaught exception
04-02 13:45:05.783: E/AndroidRuntime(1056): java.lang.RuntimeException: An error occured while executing doInBackground()
04-02 13:45:05.783: E/AndroidRuntime(1056): at android.os.AsyncTask$3.done(AsyncTask.java:200)
04-02 13:45:05.783: E/AndroidRuntime(1056): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
04-02 13:45:05.783: E/AndroidRuntime(1056): at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
04-02 13:45:05.783: E/AndroidRuntime(1056): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
04-02 13:45:05.783: E/AndroidRuntime(1056): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
04-02 13:45:05.783: E/AndroidRuntime(1056): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
04-02 13:45:05.783: E/AndroidRuntime(1056): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)
04-02 13:45:05.783: E/AndroidRuntime(1056): at java.lang.Thread.run(Thread.java:1096)
04-02 13:45:05.783: E/AndroidRuntime(1056): Caused by: java.lang.NullPointerException
04-02 13:45:05.783: E/AndroidRuntime(1056): at com.asynctask.namespace.User.addName(User.java:11)
04-02 13:45:05.783: E/AndroidRuntime(1056): at com.asynctask.namespace.AsyncTaskExampleActivity$loadData.doInBackground(AsyncTaskExampleActivity.java:39)
04-02 13:45:05.783: E/AndroidRuntime(1056): at com.asynctask.namespace.AsyncTaskExampleActivity$loadData.doInBackground(AsyncTaskExampleActivity.java:1)
04-02 13:45:05.783: E/AndroidRuntime(1056): at android.os.AsyncTask$2.call(AsyncTask.java:185)
04-02 13:45:05.783: E/AndroidRuntime(1056): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
04-02 13:45:05.783: E/AndroidRuntime(1056): ... 4 more
04-02 13:45:05.903: I/dalvikvm(1056): threadid=7: reacting to signal 3
04-02 13:45:06.093: I/dalvikvm(1056): Wrote stack trace to '/data/anr/traces.txt'
Любые идеи, почему?
Ваша помощь очень ценится! Счастливое кодирование!
У вас есть сообщение об ошибке или что-то еще? – Jeroen
Скомпилирован ли ваш код или имя строки просто не установлено? Пожалуйста, будьте более конкретными, когда вы говорите: «Это не работает должным образом». Я замечаю, что addName имеет опечатку в теле. – Bill
Вы должны действительно придерживаться соглашения о присвоении имен в начале имен классов с большой буквы. Все остальное просто сбивает с толку. –