2011-12-15 56 views
2

我是这个网站的新手。 我与我的AsyncTask和我的android程序有一个错误...这是我写的第一个异步任务。NullPointerException调用AsyncTask.onPreExecute()

主类称为SocialApp.java

@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    TextView t = (TextView) this.findViewById(R.id.textView1);  

    HTMLParser task = new HTMLParser(); 
    task.setTextView(t); 
    task.execute();   
} 

基本AsyncTask

public class HTMLParser extends AsyncTask<Void, Void, Boolean> { 

    TextView t; 
    String title = "error"; 

    public void setTextView(TextView t){ 
     this.t = t; 
    } 

    @Override 
    protected void onPreExecute() { 
     t.setText(title); 
    } 

    @Override 
    protected Boolean doInBackground(Void ... arg0) { 
     t.setText(title); 
    } 

    @Override 
    protected void onPostExecute(Boolean result) { 
     t.setText(title); 
    } 
} 

在此

12-15 12:34:11.808: E/AndroidRuntime(590): at cv.mk.android.utapp.HTMLParser.onPreExecute(HTMLParser.java:24) 
12-15 12:34:11.808: E/AndroidRuntime(590): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561) 
12-15 12:34:11.808: E/AndroidRuntime(590): at android.os.AsyncTask.execute(AsyncTask.java:511) 
12-15 12:34:11.808: E/AndroidRuntime(590): at cv.mk.android.utapp.SocialApp.onCreate(SocialApp.java:26) 
12-15 12:34:11.808: E/AndroidRuntime(590): at android.app.Activity.performCreate(Activity.java:4465) 
12-15 12:34:11.808: E/AndroidRuntime(590): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
12-15 12:34:11.808: E/AndroidRuntime(590): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 
12-15 12:34:11.808: E/AndroidRuntime(590): ... 11 more 
12-15 12:34:19.666: D/dalvikvm(609): GC_FOR_ALLOC freed 33K, 3% free 9890K/10179K, paused 215ms 
12-15 12:34:19.677: I/dalvikvm-heap(609): Grow heap (frag case) to 11.363MB for 1700016-byte allocation 
12-15 12:34:19.747: D/dalvikvm(609): GC_CONCURRENT freed <1K, 3% free 11549K/11847K, paused 3ms+12ms 
12-15 12:34:19.967: D/dalvikvm(609): GC_CONCURRENT freed 1K, 2% free 12079K/12231K, paused 2ms+3ms 
12-15 12:34:20.037: D/dalvikvm(609): GC_FOR_ALLOC freed 1K, 2% free 12298K/12487K, paused 24ms 
12-15 12:34:20.277: D/AndroidRuntime(609): Shutting down VM 
12-15 12:34:20.277: W/dalvikvm(609): threadid=1: thread exiting with uncaught exception (group=0x409961f8) 
12-15 12:34:20.277: D/dalvikvm(609): GC_CONCURRENT freed 1K, 1% free 13063K/13191K, paused 3ms+3ms 
12-15 12:34:20.287: E/AndroidRuntime(609): FATAL EXCEPTION: main 
12-15 12:34:20.287: E/AndroidRuntime(609): java.lang.RuntimeException: Unable to start activity ComponentInfo{cv.mk.android.utapp/cv.mk.android.utapp.SocialApp}: java.lang.NullPointerException 
12-15 12:34:20.287: E/AndroidRuntime(609): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955) 
12-15 12:34:20.287: E/AndroidRuntime(609): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
12-15 12:34:20.287: E/AndroidRuntime(609): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
12-15 12:34:20.287: E/AndroidRuntime(609): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
12-15 12:34:20.287: E/AndroidRuntime(609): at android.os.Handler.dispatchMessage(Handler.java:99) 
12-15 12:34:20.287: E/AndroidRuntime(609): at android.os.Looper.loop(Looper.java:137) 
12-15 12:34:20.287: E/AndroidRuntime(609): at android.app.ActivityThread.main(ActivityThread.java:4340) 
12-15 12:34:20.287: E/AndroidRuntime(609): at java.lang.reflect.Method.invokeNative(Native Method) 
12-15 12:34:20.287: E/AndroidRuntime(609): at java.lang.reflect.Method.invoke(Method.java:511) 
12-15 12:34:20.287: E/AndroidRuntime(609): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
12-15 12:34:20.287: E/AndroidRuntime(609): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
12-15 12:34:20.287: E/AndroidRuntime(609): at dalvik.system.NativeStart.main(Native Method) 
12-15 12:34:20.287: E/AndroidRuntime(609): Caused by: java.lang.NullPointerException 
12-15 12:34:20.287: E/AndroidRuntime(609): at cv.mk.android.utapp.HTMLParser.onPreExecute(HTMLParser.java:24) 
12-15 12:34:20.287: E/AndroidRuntime(609): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:561) 
12-15 12:34:20.287: E/AndroidRuntime(609): at android.os.AsyncTask.execute(AsyncTask.java:511) 
12-15 12:34:20.287: E/AndroidRuntime(609): at cv.mk.android.utapp.SocialApp.onCreate(SocialApp.java:26) 
12-15 12:34:20.287: E/AndroidRuntime(609): at android.app.Activity.performCreate(Activity.java:4465) 
12-15 12:34:20.287: E/AndroidRuntime(609): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
12-15 12:34:20.287: E/AndroidRuntime(609): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 
12-15 12:34:20.287: E/AndroidRuntime(609): ... 11 more 

得到的我都试过一切,我真的很困惑,什么样正在这里...

感谢您的时间和精力。

+0

,而不是`t.setText(职称);`异步任务里,尝试在您的活动创建一个方法来做到这一点,和呼叫那你的异步任务 – SERPRO 2011-12-15 18:45:15

+0

方法,所以我必须发送SocialApp的实例到AsyncTask? – bluejamesbond 2011-12-15 18:46:40

+0

你正在得到一个NullPointerException,你确定TextView被正确初始化了吗? – bvd 2011-12-15 18:48:51

回答

0

您不能在doInBackground中调用t.setText。该方法在不同的线程中运行,因此无法更新UI。只有UI线程中的东西才能做到这一点。因此,在处理过程中,如果您想更新UI,您必须调用publishProgress,然后UI线程将调用onProgressUpdate,在那里您可以更新UI。

一个很好的说明,请参见本主题:

UpdateUI from AsyncTask

虽然这仍然是有效的,我错过了空指针异常。如上所述,t可能未被初始化。

0

把的AsyncTask的活动里面,像这样:

public class HTMLParser extends AsyncTask<Void, Void, Boolean> { 

String title = "error"; 

public void setTextView(TextView t){ 
    ((TextView) SocialApp.this.findViewById(R.id.yourtextview)).setText(title); 
} 

@Override 
protected void onPreExecute() { 

    ((TextView) SocialApp.this.findViewById(R.id.yourtextview)).setText(title); 

} 

@Override 
protected Boolean doInBackground(Void ... arg0) { 
    ((TextView) SocialApp.this.findViewById(R.id.yourtextview)).setText(title); 
} 

@Override 
protected void onPostExecute(Boolean result) { 
    ((TextView) SocialApp.this.findViewById(R.id.yourtextview)).setText(title); 


} 
} 
相关问题