2011-08-03 8 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は、私は私の他の場所で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 

を置いBroadcast receivedログを登録することですコードではなく、役に立たない。なにか提案を?

答えて

6

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

私はintは0に切り捨てられますことを信じて、あなたがしているので、私の推測では、それが0であるかにあなたのログを変えることができるということです進歩ダイアログを0だけインクリメントするだけです。

+0

ああ私はそれを逃した:) – Jack

+0

あなたは正しいです。愚かな間違い。ありがとう! – ababzy

0

myProgressDialog.incrementProgressBy()にデバッグポイントを置いてみてください....増分の値は何ですか?問題は、この行であるかもしれない

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

あなたが正しいです。愚かな間違い。ありがとう! – ababzy

1

あなたのUIを更新するためにbroadcastreceiverを使用するのではなく、観測可能なパターンのようなものを使用することはできませんでした。 UIスレッドのUIの更新は次のようになります:

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

さらに近代的なものを使用する場合は、AsyncTaskを使用してUIスレッドで更新を実行してください。

よろしく、 ステファン

関連する問題