完成Thread后如何使图像可见?

时间:2014-04-12 07:30:41

标签: android

我正在制作一个项目,我正在使用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);
    }

2 个答案:

答案 0 :(得分:1)

您无法从非UI线程更改UI。您可以使用runOnUiThread的{​​{1}}方法:

Activity

答案 1 :(得分:0)

你想要的是AsyncTask。实现doInBackground()(在后台运行)和onPostExecute()(在UI线程上运行)。

https://developer.android.com/reference/android/os/AsyncTask.html