2014-03-27 49 views
0

1小时: Update ListView Textview vom Asyntask使用处理器的AsyncTask更新UI

现在我有一个问题。我试图解决与处理的问题:我把我的Asyntask从我的自定义ListViewAdapter

Bundle bndl = new Bundle(); 
bndl.putLong("startTime", 66); 
timeCounter counter = new timeCounter(this, holder.txtTimeTo); 
counter.execute(bndl); 

这里是我的AsyncTask:

public class timeCounter extends AsyncTask<Bundle, Void, String> { 
private String jsonResult; 
ArrayList<club> clublist= new ArrayList<club>(); 
private String url = "http://ivenda.de/nyte/getclubs.php"; 
public ticketAdapter actv; 
private final Handler mHandler = new Handler(); 
TextView txtTime = null; 


public timeCounter(ticketAdapter ac, TextView txtTime) 
{ 
    actv = ac; 
} 

@Override 
protected String doInBackground(Bundle... getData) { 
    long restTime = getData[0].getLong("startTime"); 
    while(restTime>0) { 
     SystemClock.sleep(1000); 
     restTime = restTime - 1; 
     setTime(restTime); 
    } 

    return null; 
} 


public void setTime(final long restTime) { 
    final functions func = new functions(); 
    mHandler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      txtTime.setText(func.getTimeText(restTime)); 

     } 
    }, 0); 
} 
} 

等待1秒后。我得到这个错误:

03-27 22:09:16.696: E/AndroidRuntime(4154): FATAL EXCEPTION: main 
03-27 22:09:16.696: E/AndroidRuntime(4154): java.lang.NullPointerException 
03-27 22:09:16.696: E/AndroidRuntime(4154):  at     
ivenda.pack.timeCounter$1.run(timeCounter.java:68) 
03-27 22:09:16.696: E/AndroidRuntime(4154):  at  
android.os.Handler.handleCallback(Handler.java:725) 
03-27 22:09:16.696: E/AndroidRuntime(4154):  at   android.os.Handler.dispatchMessage(Handler.java:92) 
03-27 22:09:16.696: E/AndroidRuntime(4154):  at android.os.Looper.loop(Looper.java:137) 
03-27 22:09:16.696: E/AndroidRuntime(4154):  at android.app.ActivityThread.main(ActivityThread.java:5041) 
03-27 22:09:16.696: E/AndroidRuntime(4154):  at java.lang.reflect.Method.invokeNative(Native Method) 
03-27 22:09:16.696: E/AndroidRuntime(4154):  at java.lang.reflect.Method.invoke(Method.java:511) 
03-27 22:09:16.696: E/AndroidRuntime(4154):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 
03-27 22:09:16.696: E/AndroidRuntime(4154):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 
03-27 22:09:16.696: E/AndroidRuntime(4154):  at dalvik.system.NativeStart.main(Native Method) 

有人任何想法?

感谢您的帮助! :)

+0

下面的答案对你的NPE是正确的,但是我不知道为什么你在使用'AsyncTask'时首先使用了一个处理程序。你为什么不使用'onProgressUpdate'?虽然真的'AsyncTask'不能用于任何超过几秒的任何事情。 – kabuko

回答

3

您的TextView txtTime为空。你需要告诉它你想更新哪个TextView

+0

谢谢,现在它的工作是:D ..我讨厌这样的错误; D – user3384194