2011-08-03 59 views
0

我想增加我收到的廣播上的進度條,但myProgressDialog.incrementProgressBy(increment);代碼從我的角度來看沒有任何影響。我曾嘗試將命令放置在不同的地方,但我仍然看不到任何效果。爲什麼我的進度條不能正確增加?

這是我的代碼的樣子。

public static final int max = 180; 
public final static int increment = (1/180); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
      ... 
     i = new Intent(); 
    i.setAction(ITEM_CREATED); 
    registerReceiver(myBroadcastReceiver, new IntentFilter(ITEM_CREATED));    
     findFeeds = new Runnable(){ 
      @Override 
      public void run() 
      { 
       getFeedObjects(); 
      } 
      }; 
      beginThread(); 
     } 

public static Context getAppContext() { 
    return context; 
} 

private void beginThread() 
{ 
    switch (checkConnectionState(OffsideLiteActivity.this)) 
    { 
     case 0: 
     thread = new Thread(null, findItems, "DoingInBackground"); 
     thread.start(); 
     myProgressDialog = new ProgressDialog(this); 
      myProgressDialog.setCancelable(true); 
      myProgressDialog.setMessage("Loading..."); 
      myProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
      myProgressDialog.setProgress(0); 
      myProgressDialog.setMax(max); 
      myProgressDialog.show(); 

     break; 
     case 1: 
     connectionError(); 
     break; 
     default: 
    } 
} 

    private BroadcastReceiver myBroadcastReceiver = 
    new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) 
     { 
      myProgressDialog.incrementProgressBy(increment); 
      Log.d("RECEIVED", "Broadcast received"); 
     } 

    }; 

有趣的部分是logcat的註冊Broadcast received日誌就像我說的我都試過把myProgressDialog.incrementProgressBy(increment);命令其他地方我把myProgressDialog.incrementProgressBy(increment);代碼

logcat的

08-03 13:56:15.109: DEBUG/RECEIVED(8666): Broadcast received 
08-03 13:56:15.109: DEBUG/RECEIVED(8666): Broadcast received 
08-03 13:56:15.109: DEBUG/RECEIVED(8666): Broadcast received 
08-03 13:56:15.109: DEBUG/RECEIVED(8666): Broadcast received 
08-03 13:56:15.109: DEBUG/RECEIVED(8666): Broadcast received 

後我代碼,但無濟於事。任何建議?

回答

6

問題可能是這一行:

public final static int increment = (1/180); 

我相信INT將被截斷爲0,所以你只會將進度對話框遞增0.您可能希望遞增爲1.

+0

啊是的,我錯過了:) – Jack

+0

你說得對。愚蠢的錯誤。謝謝! – ababzy

0

嘗試把一個調試點權利在myProgressDialog.incrementProgressBy()....什麼是增量的價值?我的猜測是,它可能是0或更改登錄到:

Log.d("RECEIVED", "Broadcast received, increment by " + increment); 
+0

你說得對。愚蠢的錯誤。謝謝! – ababzy

1

而不是使用broadcastreceiver來更新您的UI,您不能只使用類似觀察可觀察模式的東西,然後監聽器會運行UI線程中的UI更新如下所示:

public void updateUIRequested(int increment) 
{ 
    runOnUIThread(new Runnable() { myProgressDialog.incrementProgressBy(increment); }); 
}//met 

或者如果你想要更現代的東西,使用AsyncTask並仍然在UI線程中運行更新。

問候, 斯特凡