2015-12-13 41 views
-2

需要關於onPostExecute的幫助。如果我想把更新放在textView上應該是什麼代碼,我應該怎麼做?如果你想從Ubidots最後價值得到你的TextView如何從onPostExecute內更新TextView

public class YourActivity extends Activity{ 

    private TextView textView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.your_activity_layout); 
     textView = (TextView)findViewById(R.id.yourTextViewID); 
    ... 
    } 

    private YourAsyncTask extends AsyncTask{ 
    ... 
     @Override 
     protected void onPostExecute(Value[] variableValues) { 
      if(textView != null) 
       textView.setText("your text"); 

     } 
    } 
} 
+0

'onPostExecute'從主/ UI線程運行,所以你可以像平常一樣更新UI元素。 –

+0

要麼通過asyncTask構造函數中的視圖引用,並從onpostExecute()訪問它們,或者使視圖引用全局,以便onPostexecute()可以訪問它們 – Yazan

+0

謝謝。如果我想從雲端獲取數據並且我想在textView上更新它。我該怎麼辦?^_^ – EngrTayo

回答

0

執行如下操作,以節省TextView的引用作爲成員和嵌套的AsyncTask使用它。你可以試試這個,但是你必須先設置文本視圖OnCreate

@Override 
     protected void onPostExecute(Value[] variableValues) { 
      // Update your views here 

      String status = Double.toString(variableValues[0].getValue()); 
//this is textview for show last value from ubidots 
      mBatteryStatus.setText(status); 

     } 
    } 
+0

謝謝Vitaliy A.但是如果?,我想從雲端獲取數據讓你知道如何? – EngrTayo

+0

請求數據應該在doInBackground()上完成。對於http請求,你可以使用非常簡單的叫做OkHttp的lib:http://square.github.io/okhttp/ –

+0

我可以在android studio中使用那個lib,我已經有了一個lib https://github.com/ubidots/ubidots-java。我在這裏發送數據http://ubidots.com/docs/devices/android.html的代碼。如何更新視圖? – EngrTayo

0

@Override 
protected Value[] doInBackground(Integer... params) { 
    ApiClient apiClient = new ApiClient(API_KEY); 
    Variable batteryLevel = apiClient.getVariable(VARIABLE_ID); 
    Value[] variableValues = batteryLevel.getValues(); 

    return variableValues; 
} 

@Override 
protected void onPostExecute(Value[] variableValues) { 
    // Update your views here 
}