2012-09-02 111 views
0

嘿,我最近進入了Android,並創建了我的第一個應用程序,這意味着當用戶按下開始按鈕時,啓動60秒的運行計時器。應用程序設置內容畫面精美,並顯示60,但是當我成功地點擊它顯示59開始按鈕,然後應用程序crashes.Here的代碼(它只有一個活動)從第一個Android應用程序不能正常工作..幫助需要

public class test1activity extends Activity 
{ 
Thread countdown; 
long f, pa, jee; 
TextView ytvp; 
String s; 
TextView uyti; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     ytvp = (TextView) findViewById(R.id.textView2); 
     uyti = (TextView) findViewById(R.id.tv2); 

countdown = new Thread() { 
      public void run() { 
       jee = (System.currentTimeMillis())/1000; 
       while ((((System.currentTimeMillis())/1000) - jee) < 60) 
           {     
           try { 
        sleep(1000);  
       } catch (InterruptedException e) {     
        e.printStackTrace();  
       } finally { 
        f = ((System.currentTimeMillis())/1000) - jee; 
         pa = 60 - f;  
         s = String.valueOf(pa); 
         ytvp.setText(s); 
        } 
       } 
           } 
       }; 
    }  
public void whenclickstart(View view) { 
     countdown.start(); 
    }  
+0

這將是取代的setText如果您附加了LogCat的輸出,並告訴我們您得到的是什麼異常,那麼這會更有幫助。 – user1641914

回答

2

您不能設置UI元素在另一個線程(非UI線程)內。所以你不能用這條線。

ytvp.setText(s); 

嘗試這樣的事情,你不需要穿什麼你正在嘗試做的

new CountDownTimer(60000, 1000) { 

    public void onTick(long millisUntilFinished) { 
     ytvp.setText("" + millisUntilFinished/1000); 
    } 

    public void onFinish() { 
      ytvp.setText(""+0); 
    } 
    }.start(); 

如果你不想使用countdowntimer與

runOnUiThread(new Runnable() { 
    public void run() { 
     ytvp.setText(s); 
    } 
}); 
相關問題