2012-07-02 77 views
0

我想更新文本視圖,從微調AsycTask.Actually我在做什麼更新的UIElement從AsycTask

我從以JSON形式的服務器和結果恢復數據的話,我解析JSON和填充數據兩個微調當我使用Asyctask怎麼一回事,因爲TextView的不update..Here是我的代碼狙擊

TAG_CONFIG = "xyz" 
TAG_CONFIG1 = "yyy" 
JSONParser jParser = null; 
JSONObject json = null; 
jParser = new JSONParser(); 
json = jParser.getJSONFromUrl(url); 

try { 
    // Getting Array of Contacts 
    contacts = json.getJSONArray(TAG_CONFIG); 
    for (int i = 0; i < contacts.length(); i++) { 
     JSONArray c = contacts.getJSONArray(i); 
     CompanyName = new String[c.length()]; 
     for (int j = 0; j < c.length(); j++) { 
      CompanyName[j] = c.getString(j); 
     } 


    } 

爲tab_confg1類似一個textview.How我可以更新數據...

回答

2

doInBackground不與主同步UI線程...因此,您不能直接更新從這個方法你的用戶界面(你必須改用HandlermContext.runOnUiThread())。但是,您可以從onPostExecute更新您的UI,因爲此方法在UI線程上執行。

0

使用runOnUiThreaddoInBackground的非UI線程訪問UI。

@Override 
protected String doInBackground(Void... params) { 
    Activity_Name.this.runOnUiThread(new Runnable() { 

       @Override 
       public void run() { 
        // your code here to access UI elements 

       } 
      }); 
    return "string"; 
} 
0

嘗試......

每當我們開始在Android的應用程序,我們開始對專用UI線程

2.創建任何線程將退出UI線程中的一個

保持在非UI線程UI線程和非UI工作UI的工作是可取的,但它 接着是規則與蜂窩Android版本的發佈。

4.雖然非UI線程可用於使用處理器從它的工作張貼到UI線程,Android提供的AsyncTask,這在同步有助於 非UI線程上所做的工作回到UI線程

的AsyncTask <>

--->doInBackground()將處理非UI工作。

--->PostExectue()將幫助發佈非UI工作返回到UI線程。