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);
        }
    }); 

しかし、ボタンをクリックしてもバーが表示されず、アクティビティに直接ジャンプするだけなので機能しません(データをロードするので数秒かかります)。それで、スレッド化する必要がありますか?

半額!

4

1 に答える 1

3

ここでの問題 (私が正しければ) は、進行状況バーが現在実行中のアクティビティの一部であり、別のアクティビティ ("org.packagename.etc.etc") が何らかの作業を行っている間に表示したいということですか?

その場合は、作業を行うアクティビティでプログレス バーを開始する必要があります。しかし、それ自体も機能しません。別のスレッドで作業を行う必要があります。データの読み込みに AsyncTask を使用することを検討する必要があります。

このチュートリアルはその手助けになるかもしれません。http://www.vogella.de/articles/AndroidPerformance/article.html

プログレス バーを開始すると、UI スレッドで実行されますが、UI スレッドでも作業を行うと、他の作業が完了するまでプログレス バーは表示されません。その時までに、プログレス バーが再び非表示になっている可能性があります。

于 2012-04-10T11:36:52.990 に答える