2013-02-13 135 views
0

我正在爲學校製作一款小型遊戲,並且我想使用ProgressBar作爲XP(體驗)欄。ProgressBar無法加載

private static final int PROGRESS = 0x1; 
private ProgressBar mProgress; 
private Handler mHandler = new Handler(); 
private int mProgressStatus; 

mProgress = (ProgressBar) findViewById(R.id.xpBar); 

new Thread(new Runnable() { 
     public void run() { 
      int xp = Integer.parseInt(textViewXPValue.getText().toString()); 
      int XPNEXT = Integer.parseInt(textViewXpNextLevel.getText().toString()); 
      while (mProgressStatus < XPNEXT) { 
       mProgressStatus = xp; 

       mHandler.postDelayed(new Runnable() { 
        public void run() { 
         mProgress.setProgress(mProgressStatus); 
        } 
       }, 10); 
      } 
     } 
    }).start(); 

變量:

Integer.parseInt(textViewXpNextLevel.getText().toString()); 

等於水平,直至所需的最大XP。並且

Integer.parseInt(textViewXPValue.getText().toString()); 

等於當前玩家擁有的xp。

進度條顯示並且沒有發生錯誤。它只是不會顯示進度。

任何想法?

+0

使用postDelayed崗位,而不是更新ProgressStatus – 2013-02-13 06:43:20

+0

發佈與postDelayed你的代碼什麼ü試圖 – 2013-02-13 06:48:49

回答

0

while(....)行末尾有一個分號。 它不會讓你的while塊執行。 擺脫它,它會工作。

編輯:

您沒有設置最大值:

mProgress = (ProgressBar) findViewById(R.id.progressbar); 
       mProgress.setMax(100); 

這會讓你的進度條,做工精細。

+0

確定這做一些事情發生。現在進度條只顯示它已滿。即使狀態小於最大值 – 2013-02-13 06:55:27

0

嘿在同時的端部分號....移除N,然後嘗試....

而(mProgressStatus < XPNEXT);

應該是同時(mProgressStatus < XPNEXT)