0

最初にデータをダウンロードしてデータベースを更新するアプリケーションを書いています。これにはかなりの時間がかかるため、ユーザーにプログレス バーと、現在行われていることに関するテキスト情報を表示したいと考えています。

私のコード:

public class MainActivity extends Activity {

    private static final String TAG = "MainActivity";

    public static int count = 0;
    public static File path; 

    private ProgressBar myProgressBar;
    private int myProgress = 0;
    private TextView textView; 


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        myProgressBar=(ProgressBar)findViewById(R.id.progressbar_Horizontal);
        textView = (TextView) findViewById(R.id.show_progress);
        new Thread(progressBarThread).start();

...
... データを更新しています ...

        Intent showList = new Intent(this, ListFragmentActivity.class);
        startActivity(showList); 

    }

    private Runnable progressBarThread = new Runnable(){

        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(){

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

たとえば myProgress=60; を使用して、進行状況を手動で設定しようとしました。textView.setText("Die Datenbank wird aktualisiert.");

残念ながら、ProgressBar もテキスト情報も表示されません。

よろしくお願いします。

4

1 に答える 1

0

これをプログレスバーに使用してみてください。実行してくださいnew ProgressBarAsync().execute();

public class ProgressBarAsync extends AsyncTask<Void, Void, Void> {
    protected Void doInBackground(Void... counter) {
        while (myProgress<100){
            try{
                publishProgress(myProgress);
                Thread.sleep(1000);
                myProgress++;
            }
            catch(Throwable t){ }
        }
        return null;
    }

    protected void onProgressUpdate(Integer... values) {
        myProgressBar.setProgress(values[0]);
        super.onProgressUpdate(values);
    }
}
于 2013-02-08T09:06:53.707 に答える