У меня есть узнать, как получить прогрессбар работает с perticular задачей здесь.
Но я использую хронометр в своем приложении. И исходя из этого значения, я хочу установить ProgressBar.
Итак, как это сделать. ?
Я создал эту тему для работы. Код:
// Start lengthy operation in a background thread
progressThread = new Thread(new Runnable() {
public void run() {
while (mProgressStatus < 100) {
mProgressStatus = doWork();
// Update the progress bar
mHandler.post(new Runnable() {
public void run() {
progressBar.setProgress(mProgressStatus);
}
});
}
}
});
progressThread.start();
Я знаю, что мне нужно сделать задачу, которая непрерывно возвращает данные int в progressStatus. Но как это сделать с помощью хронометра, который я не знаю. Поэтому, пожалуйста, помогите мне в этом.
Благодарю.
Ваша проблема кажется вашим методом doWork() (как вы упомянули в комментарии, что в этом методе ничего не сделано). Как вы видите прогресс прогрессаBar зависит от этого метода:
mProgressStatus = doWork();
Предположим, что ваш кронометр обновляется каждую секунду, поэтому progressBar будет заполнен, когда пройдет 100 секунд. Чтобы добиться этого, ваш метод doWork должен возвращать возрастающее значение прошедших секунд, то есть 1,2,3... 100. Но вернуть это значение недостаточно, потому что с вашим текущим кодом progressBar будет заполнен мгновенно.
Наиболее простым решением было бы:
mProgressStatus = 0;
progressThread = new Thread(new Runnable() {
public void run() {
while (mProgressStatus < 100) {
// Update the progress bar
mHandler.post(new Runnable() {
public void run() {
progressBar.setProgress(mProgressStatus);
}
});
mProgressStatus ++;
android.os.SystemClock.sleep(1000); // Thread.sleep() doesn't guarantee 1000 msec sleep, it can be interrupted before
}
}
});
progressThread.start();
Надеюсь это поможет,
Сергей.