2011-02-01 16 views
2

私はonclickがrssのニュースを読んでユーザーにリストを表示するボタンを持っています。ロードを完了するまで進捗バーを追加したいと思います。私の問題は、バーを追加すると最初は正しく動作しますが、戻るボタンを押すとバーが再び始まり、停止できません。プログレスバーを示すヘルプやチュートリアルは高く評価されます。ありがとう!プログレスバーの問題

ProgressBar myProgressBar; 
    int myProgress = 0; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.main1); 

    Button nea = (Button) findViewById(R.id.nea); 
    nea.setOnClickListener(new View.OnClickListener() { 
    public void onClick (View view) { 
    setContentView(R.layout.bar); 

    myProgressBar=(ProgressBar)findViewById(R.id.bar); 

      new Thread(myThread).start(); 

    Intent myIntent = new Intent(view.getContext(), nea.class); 
    startActivityForResult(myIntent, 0); 
    } 
    }); 
} 

private Runnable myThread = new Runnable(){  
    @Override 
    public void run() { 
    // TODO Auto-generated method stub 
    while (myProgress<100){ 
     try{ 
     myHandle.sendMessage(myHandle.obtainMessage()); 
     Thread.sleep(1000); 
     } 
     catch(Throwable t){ 
     } 
    } 
    } 

    Handler myHandle = new Handler(){ 

    public void handleMessage(Message msg) { 
     // TODO Auto-generated method stub 
     myProgress++; 
     myProgressBar.setProgress(myProgress); 
    } 
    }; 
     }; 
+1

http://developer.android.com/reference/android/widget/ProgressBar.html

は、それは難しいそれなしsmthingを言ってください。いくつかのコードを示しています。 –

+0

データの書き込みが完了したらプログレスバーを削除します –

+0

プログレスバーで何をしようとしていますか?現在の実装は何もしていないようです。 –

答えて

1

実は私はあなたが、onPreExecute()でプログレスバーを開始onPostExecute()でそれをキャンセルしてdoInBackground()でダウンロードを行うAsyncTask、でこれを実装すると思います。あなたが進行値を更新したい場合は、その後、onProgressUpdate()

https://github.com/pilhuhn/ZwitscherA/blob/master/src/de/bsd/zwitscher/TweetListActivity.java#L328 にプログレスバーに更新することができdoInBackground()からpublishProgress()は、(これらのメソッドを使用し、/を示しているAsyncTaskの例では、プログレスバーを隠す方法を示していますすることができますpg変数)

+0

このコードはありますか? –

+0

私の答えは、例 –

+0

にリンクするように更新されました。あなたの答えをより魅力的にすることができますか?...私はアンドロイドデベロッパーで新しく、この大きなチュートリアルと混乱しています...とにかくお試しいただきありがとうございます –

1

問題は、myProgress変数を復元しないことです。 onCreate()の先頭に0に設定します。

@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.main1); 
    myProgress = 0; // <--- notice that statement. 
    ... 
} 

また、私は任意のバックグラウンド作業にAsyncTaskを使用するためにあなたを提案します。例hereを参照してください。

+0

ProgressBar myProgressBar = 0; ? –

+0

@kostas、答えを更新しました。 –

+0

私は申し訳ありませんが、= 0は動作していません... –

0

あなたのコードは、あなたが望むように動作していないように見えます。あなたはこのアクティビティと次のアクティビティとの間にプログレスバーを表示したいと思います(私の前提)。現在のコードがどのように動作しているかに基づいて、現在のアクティビティは約100秒間プログレスバーを表示するスレッドを開始しますが、同時に2つ目のアクティビティをロードしているように見えます。 100秒が経過する前に戻るボタンを押すと、元のアクティビティに戻りますが、まだ進行状況バーが表示されています。

一般的に、アクティビティ間にプログレスバーが必要だとは思いませんが、スムーズにスワップする必要があります。私は通常、アクティビティが完全にレンダリングされる前に、プログレスバーを使用してデータをロードします。

はたぶん、あなたは、ProgressBarの上のAndroidのドキュメントのいくつかを見てみなければならない:http://developer.android.com/reference/android/app/ProgressDialog.html

http://developer.android.com/guide/topics/ui/dialogs.html

+0

こんにちは!私はここで同じ問題がある、私はスレッドを起動する前に不確定な進捗バーを使用し、結局私はそれがまだ何かをやっている場合、それはまだprogressbarを表示する別のアクティビティに行くと、私はプログレスバーの状態を取得して設定するために静的メソッドを使用しています... – Maxrunner

+0

また、戻るボタンを押したときに起動されるonResumeのプログレスバーの状態を変更しようとしましたが、それでも進行状況バーが回転していることを示しています。:S – Maxrunner

+0

@Maxrunner:質問がある場合は、新しい質問をする必要があります。 –

関連する問題