进度条对我不起作用。我试着在Progress中显示一些细节。但我不能,我做错了什么?请帮帮我。
活动文件名 - MainActivity.java
package com.example.sqliteexample;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.app.ProgressDialog;
import android.view.Menu;
public class MainActivity extends Activity {
private Handler handler = new Handler();
private ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//dialog = ProgressDialog.show(this,getString(R.string.loading) ,getString(R.string.alignMsg));
dialog = ProgressDialog.show(this,"Loading", "Loading the Image of the Day");
Thread th = new Thread()
{
public void run() {
handler.post(
new Runnable (){
@Override
public void run() {
try {
Thread.sleep(10000);
} catch (InterruptedException e) {
e.printStackTrace();
}
dialog.dismiss();
}});
}};
th.start();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
答案 0 :(得分:0)
使用handler.postDelayed
:
dialog = ProgressDialog.show(this,
"Loading", "Loading the Image of the Day");
handler.postDelayed(runnable,10000);
}
Runnable runnable = new Runnable() {
@Override
public void run() {
/* dismiss dialog here*/
dialog.dismiss();
handler.removeCallbacks(runnable);
}
};
或者你需要在Thread run方法中移动Thread.sleep(10000);
,而不是在传递给Handler.post
方法的Runnable中移动:
Thread th = new Thread()
{
public void run() {
/** call Thread.Sleep here... **/
Thread.sleep(10000);
handler.post(
....your code here....
答案 1 :(得分:0)
handler
在主活动中定义,因此它将在UI线程上运行。你要求睡10秒钟,这对UI线程无效。
如果您想显示进度条并在10秒后将其关闭,请使用handler.postDelayed(Runnable r, long delayMillis)
。
这是代码:
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// dialog = ProgressDialog.show(this,getString(R.string.loading) ,getString(R.string.alignMsg));
dialog = ProgressDialog.show(this, "Loading", "Loading the Image of the Day");
handler.postDelayed(new Runnable()
{
@Override
public void run()
{
dialog.dismiss();
}
}, 10000);
}
希望它有用。