在来自Android中的JSON解析的edittext中设置数据时获取异常

时间:2013-05-02 05:02:21

标签: android json android-asynctask

我正在获取响应并解析数据并存储在String中现在我要在Edittext中显示我正在获得以下异常。我正在获取响应并在AsyncTask中解析

    05-02 10:13:56.797: W/System.err(17935): android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
    05-02 10:13:56.867: W/System.err(17935):    at android.view.ViewRoot.checkThread(ViewRoot.java:2812)
    05-02 10:13:56.867: W/System.err(17935):    at android.view.ViewRoot.invalidateChild(ViewRoot.java:607)
    05-02 10:13:56.867: W/System.err(17935):    at android.view.ViewRoot.invalidateChildInParent(ViewRoot.java:633)
    05-02 10:13:56.867: W/System.err(17935):    at android.view.ViewGroup.invalidateChild(ViewGroup.java:2505)
    05-02 10:13:56.867: W/System.err(17935):    at android.view.View.invalidate(View.java:5115)
    05-02 10:13:56.867: W/System.err(17935):    at android.widget.TextView.invalidateCursor(TextView.java:3661)
    05-02 10:13:56.867: W/System.err(17935):    at android.widget.TextView.spanChange(TextView.java:6352)
    05-02 10:13:56.867: W/System.err(17935):    at android.widget.TextView$ChangeWatcher.onSpanAdded(TextView.java:6477)
    05-02 10:13:56.867: W/System.err(17935):    at android.text.SpannableStringBuilder.sendSpanAdded(SpannableStringBuilder.java:906)
    05-02 10:13:56.867: W/System.err(17935):    at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:611)
    05-02 10:13:56.867: W/System.err(17935):    at android.text.SpannableStringBuilder.setSpan(SpannableStringBuilder.java:514)
    05-02 10:13:56.867: W/System.err(17935):    at android.text.Selection.setSelection(Selection.java:74)
    05-02 10:13:56.867: W/System.err(17935):    at android.text.Selection.setSelection(Selection.java:85)
    05-02 10:13:56.867: W/System.err(17935):    at android.text.method.ArrowKeyMovementMethod.initialize(ArrowKeyMovementMethod.java:497)
    05-02 10:13:56.867: W/System.err(17935):    at android.widget.TextView.setText(TextView.java:2712)
    05-02 10:13:56.867: W/System.err(17935):    at android.widget.TextView.setText(TextView.java:2592)
    05-02 10:13:56.867: W/System.err(17935):    at android.widget.EditText.setText(EditText.java:149)
    05-02 10:13:56.867: W/System.err(17935):    at android.widget.TextView.setText(TextView.java:2567)
    05-02 10:13:56.867: W/System.err(17935):    at com.smartbuzz.contax.Profil.getServerResponse(Profil.java:262)
    05-02 10:13:56.877: W/System.err(17935):    at com.smartbuzz.contax.Profil$Testing.doInBackground(Profil.java:357)
    05-02 10:13:56.877: W/System.err(17935):    at com.smartbuzz.contax.Profil$Testing.doInBackground(Profil.java:1)
    05-02 10:13:56.877: W/System.err(17935):    at android.os.AsyncTask$2.call(AsyncTask.java:185)
    05-02 10:13:56.877: W/System.err(17935):    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
    05-02 10:13:56.877: W/System.err(17935):    at java.util.concurrent.FutureTask.run(FutureTask.java:137)
    05-02 10:13:56.877: W/System.err(17935):    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1068)
    05-02 10:13:56.877: W/System.err(17935):    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:561)

1 个答案:

答案 0 :(得分:5)

您正在从工作线程调用setText()的{​​{1}}方法。所有UI元素只能从主线程更新。

EditText中,AsyncTask方法应在setText()中调用,而不是onPostExecute()