当进度条完成时做某事
do something when progress bar is completed
我想在进度条结束时敬酒(或显示对话框)。我尝试在 运行() 方法中使用 if
来执行此操作,但它会导致以下错误:
Can't create handler inside thread that has not called Looper.prepare()
我该怎么做?
这是我的代码:
@Override
public void run() {
int myProgress = 0, Speed = 50;
ProgressBar myProgressBar = (ProgressBar) findViewById(R.id.progressbar);
while (myProgress<750){
try{
Thread.sleep(Speed);
myProgress++;
if (myProgressBar != null) {
myProgressBar.setProgress(myProgress);
}
}
catch(Throwable t){ }
}
}
runOnUiThread(new Runnable() {
public void run() {
//your code here
}
});
改成这样
runOnUiThread(new Runnable() {
public void run() {
int myProgress = 0, Speed = 50;
ProgressBar myProgressBar = (ProgressBar) findViewById(R.id.progressbar);
while (myProgress<750){
try{
Thread.sleep(Speed);
myProgress++;
if (myProgressBar != null) {
myProgressBar.setProgress(myProgress);
}
}
catch(Throwable t){ }
}
}
});
工作线程用于执行后台任务,除非您调用 runOnUiThread 之类的方法,否则您无法在工作线程内的 UI 上显示任何内容。如果您尝试在 UI 线程上显示任何内容而不调用 runOnUiThread,则会出现 java.lang.RuntimeException。
如果您仍然遇到任何问题,请告诉我。
我试过了,现在可以用了:
public void run() {
int myProgress = 0, Speed = 50;
ProgressBar myProgressBar = (ProgressBar) findViewById(R.id.progressbar);
while (myProgress<750){
try{
Thread.sleep(Speed);
myProgress++;
if (myProgressBar != null) {
myProgressBar.setProgress(myProgress);
}
}
catch(Throwable t){ }
}
final int finalMyProgress = myProgress;
runOnUiThread(new Runnable() {
@Override
public void run() {
if (finalMyProgress == 750)
Toast.makeText(word_guess2.this, "hi", Toast.LENGTH_SHORT).show();
}
});
}
我想在进度条结束时敬酒(或显示对话框)。我尝试在 运行() 方法中使用 if
来执行此操作,但它会导致以下错误:
Can't create handler inside thread that has not called Looper.prepare()
我该怎么做?
这是我的代码:
@Override
public void run() {
int myProgress = 0, Speed = 50;
ProgressBar myProgressBar = (ProgressBar) findViewById(R.id.progressbar);
while (myProgress<750){
try{
Thread.sleep(Speed);
myProgress++;
if (myProgressBar != null) {
myProgressBar.setProgress(myProgress);
}
}
catch(Throwable t){ }
}
}
runOnUiThread(new Runnable() {
public void run() {
//your code here
}
});
改成这样
runOnUiThread(new Runnable() {
public void run() {
int myProgress = 0, Speed = 50;
ProgressBar myProgressBar = (ProgressBar) findViewById(R.id.progressbar);
while (myProgress<750){
try{
Thread.sleep(Speed);
myProgress++;
if (myProgressBar != null) {
myProgressBar.setProgress(myProgress);
}
}
catch(Throwable t){ }
}
}
});
工作线程用于执行后台任务,除非您调用 runOnUiThread 之类的方法,否则您无法在工作线程内的 UI 上显示任何内容。如果您尝试在 UI 线程上显示任何内容而不调用 runOnUiThread,则会出现 java.lang.RuntimeException。 如果您仍然遇到任何问题,请告诉我。
我试过了,现在可以用了:
public void run() {
int myProgress = 0, Speed = 50;
ProgressBar myProgressBar = (ProgressBar) findViewById(R.id.progressbar);
while (myProgress<750){
try{
Thread.sleep(Speed);
myProgress++;
if (myProgressBar != null) {
myProgressBar.setProgress(myProgress);
}
}
catch(Throwable t){ }
}
final int finalMyProgress = myProgress;
runOnUiThread(new Runnable() {
@Override
public void run() {
if (finalMyProgress == 750)
Toast.makeText(word_guess2.this, "hi", Toast.LENGTH_SHORT).show();
}
});
}