2013-09-25 69 views
1

我是Android開發的新手。現在我想通過textview控件在線程中顯示當前系統時間。我得到一些例子,並可以啓動線程在textview控件中繪製文本。
在Android ADT中找不到getDateTimeInstance方法

但是當我通過下面的鏈接得到系統當前時間:Display the current time and date in an Android application,我得到錯誤,錯誤說:getDateTimeInstance()對於DateFormat類型是未定義的。 爲什麼這個答案不適合我?謝謝。下面

僅供您參考代碼:在不可能

timeView.setText("I am Fired via Non-UI thread:"+s); 

使用runOnUiThread線程

public class MainActivity extends Activity { 
private TextView timeView; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    new Thread(){ 
     public void run(){ 
       System.out.println("Thread is running!!"); 
       timeView = (TextView)findViewById(R.id.textView1); 

       String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date()); 
       timeView.setText("I am Fired via Non-UI thread:"+s); 
     } 
    }.start(); 
} 
+0

把你的代碼,您正在使用 –

回答

2

Updatin UI。內部線程的run方法

runOnUiThread(new Runnable() { 

        @Override 
        public void run() { 
         timeView.setText("I am Fired via Non-UI thread:"+s); 
        } 
       }); 

另外在線程之外初始化的TextView

 timeView = (TextView)findViewById(R.id.textView1) 

還要檢查這個

http://developer.android.com/reference/java/text/DateFormat.html

檢查import語句。

import java.text.DateFormat // import this 

代替

import android.text.format.DateFormat; 
+0

這是解決這一通常的方法是什麼?這不是在main-ui上產生更多流量嗎? – bofredo

+0

@bofredo爲什麼會這樣。如果你正在進行後臺計算,只需在線程上更新ui,或者使用asynctask – Raghunandan

+0

他是正確的,你不能從單獨的線程更新Android UI,所以你必須使用處理程序或runOnUiThread來進行實際的界面更新。 – MattC

相關問題