2011-11-11 10 views
0

アンドロイドの不確定な進行に問題があります。私はボタンがあり、ボタンをクリックすると不確定なプログレスバーが現れ、タスクの最後にプログレスバーが消えるはずです。アンドロイド不定進行バーの問題

しかし、私はこれを行うことができません。

package com.indeterminate; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.View; 
import android.view.Window; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.LinearLayout; 
import android.widget.*; 

public class IndeterminateProgressBarActivity extends Activity { 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 

    super.onCreate(savedInstanceState); 
    final ProgressBar pb=new ProgressBar(this); 
    pb.setVisibility(View.GONE); 
    Button b =new Button(this); 
    b.setText("Click to start spinning"); 
    b.setOnClickListener(new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      pb.setVisibility(View.VISIBLE); 
      // Want to write some code 
      pb.setVisibility(View.GONE); 

      // But the progress bar is not shown on the screen 

    LinearLayout l=new LinearLayout(this); 
    l.addView(pb); 
    l.addView(b); 

    this.setContentView(l); 
} 

}

+0

http://stackoverflow.com/questions/3548441/android-create-progressbar-programmatically –

+0

私の問題は、色のような属性を設定することではありません。それは消える – nikhil

+0

pb.setVisibility(View.VISIBLE); try { Thread.sleep(3000); pb.setVisibility(View.GONE); } catch(InterruptedException e){} –

答えて

1

そのため、非同期タスクを使用。 onClickの呼び出しこの概念については

new SomeTask(0).execute(); 

/** Inner class for implementing progress bar before fetching data **/ 
    private class SomeTask extends AsyncTask<Void, Void, Integer> 
    { 
     private ProgressDialog Dialog = new ProgressDialog(yourActivityClass.this); 
     @Override 
     protected void onPreExecute() 
     { 

      Dialog.setMessage("Doing something..."); 
      Dialog.show(); 
     } 

     @Override 
     protected Integer doInBackground(Void... params) 
     { 
      //Task for doing something 

      return 0; 
     } 

     @Override 
     protected void onPostExecute(Integer result) 
      { 

      if(result==0) 
      { 
//do some thing 
      } 

    // after completed finished the progressbar 
      Dialog.dismiss(); 
     } 

    } 
1

にあなたはuが見えるプログレスバーを設定することができますし、DoInBackGroundにあなたがウルのコードを書くことができ、PostExecuteにあなたはゴーンプログレスバーの可視性を設定することができpreExecuteにクラス

をasynctask必要があります。

static class PleaseWait extends AsyncTask<void, void, Void> { 

final ProgressBar pb = new ProgressBar(this); pb.setVisibility(View.GONE);

新しいPleaseWait()を呼び出すことができます。

+0

ありがとうございます。しかし、 "最終進捗バー"を初期化するときにエラーが出る – nikhil

+0

nikhil、その進捗バーを外部クラスのメンバ変数として宣言してください。そうしないと、宣言時に最終キーワードを削除できません。それが動作します。 – Hardik4560

関連する問題