2012-04-10 7 views
2

たとえば、ボタンを押しているときにVISIBLEにプログレスバーの可視性を設定したいのですが、同じアクティビティを再開しているときに可視性をGONEに設定したいと思います。できるだけ他のデータをロードするのと同時に、進捗バーを表示してから、アクティビティを再開するときに非表示にします。

public void onPause(){ 
super.onPause(); 
final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar); 
progressBar.setVisibility(View.GONE); 
} 

Button aButton = (Button) findViewById(R.id.abutton); 
    aButton.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
     final ProgressBar progressBar = (ProgressBar) findViewById(R.id.progressBar); 
     progressBar.setVisibility(View.VISIBLE); 


    Intent i = new Intent("org.packagename.etc.etc"); 
     startActivity(i); 
     } 
    }); 

を私はボタンをクリックしたとき、それはそれだけでまっすぐにジャンプバーが表示されないので、それは動作しません。ここで

は、私がしようとしていますものですアクティビティ(データをロードするには数秒かかる)。だからそれはスレッドや何かをする必要がありますか?

halp meh!

+0

だから問題は何ですか? –

+0

申し訳ありませんが完全な説明で更新されました。 :3 – jimbob

答えて

3

ここでの問題(私が正しい場合)は、進行中のバーが現在実行中のアクティビティの一部であり、別のアクティビティ( "org.packagename.etc.etc")がいくつかの仕事をしている?

この場合、作業を行うアクティビティでプログレスバーを開始する必要があります。しかし、それだけではどちらもうまくいかないでしょう。あなたは別のスレッドで作業をしなければなりません! AsyncTaskを使用してデータを読み込む必要があります。

このチュートリアルでは、このチュートリアルを参考にしてください。 http://www.vogella.de/articles/AndroidPerformance/article.html

プログレスバーを開始すると、UIスレッドで実行されますが、UIスレッドでも作業を行うと、他の作業が完了するまでプログレスバーが表示されません。そして、それまでにはすでにプログレスバーを隠していた可能性が高いでしょう。

+0

次のアクティビティが開くまで進行状況バーを表示したいだけです。これを行うにはどうすればASyncタスクを使用できますか? – jimbob

+0

okソートされた歓声。 – jimbob

+2

これは受け入れられた回答ですが、元のトピックのコードに関するコードを表示していないため、回答が悪いと思います – sports