我正在制作一个项目,我正在使用progressdialog,我想在创建活动时显示这个进度对话框,我能够做到这一点。在on create方法中,我希望图像不可见,并且我希望图像在完成进度对话框后可见,但它在行imagevisible()中抛出异常;
logcat是:
04-12 12:48:35.309: E/AndroidRuntime(4994): at com.example.project1.ShowPassword$waiter.run(ShowPassword.java:59)
代码
ImageView iv;
ProgressDialog p;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.showpass);
iv=(ImageView)findViewById(R.id.imageView1);
iv.setVisibility(View.INVISIBLE);
p= new ProgressDialog(this);
p.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
p.setTitle("Getting Password: ");
p.setMessage("Loading:");
p.setMax(100);
p.show();
Thread t=new Thread(new waiter());
t.start();
public class waiter extends Thread{
public void run(){
for(int i=0; i<5; i++){
p.incrementProgressBy(20);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}p.dismiss();
imagevisible();
}
}
public void imagevisible(){
iv.setVisibility(View.VISIBLE);
}
答案 0 :(得分:1)
您无法从非UI线程更改UI。您可以使用runOnUiThread
的{{1}}方法:
Activity
答案 1 :(得分:0)
你想要的是AsyncTask
。实现doInBackground()
(在后台运行)和onPostExecute()
(在UI线程上运行)。
https://developer.android.com/reference/android/os/AsyncTask.html