进度对话框不显示

时间:2013-12-03 15:03:13

标签: android progressdialog

我有一个进度对话框,它在kitkat之前工作,现在它不显示对话框。 如果我把一个调试并在后执行中停止程序,在对话框关闭它之前显示对话框,这意味着代码工作得太快而无法显示对话框,但这不是真的,在dailog dismiss后需要很长时间显示网格视图?

另一个奇怪的事情是,当它确实有效时会显示对话框,但圆圈没有转动或动画。

感谢收到任何评论

        private class LoadPhoto extends AsyncTask<String, Void, MyPhoneImagesAdapter> {


        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            // initialize the dialog
            String searchingString = getResources().getString(R.string.searchingString);
            String searchMsgString = getResources().getString(R.string.searchMsgString);
            m_dialog.setTitle("Searching...");
            m_dialog.setMessage("Please wait while loading client photos...");
            m_dialog.setIndeterminate(true);
            m_dialog.setCancelable(true);
            m_dialog.show();
        }



        @Override
        protected MyPhoneImagesAdapter doInBackground(String... params) {
            // TODO Auto-generated method stub
        // Execution code
            // Note we can call a method in the main class but we are running it in
            // the asynchronous thread
            getPhotos();
            return getPhotos();
        }

        @Override
        protected void onPostExecute(MyPhoneImagesAdapter result) {
            super.onPostExecute(result);
// Note we can update the UI from the post execute method only note we pass the adapter which 
// we created in the do in background
            GridView grid = (GridView) getView().findViewById(R.id.photoGrid);
              grid.setAdapter(result);
               // See: ImageAdapter.java
              grid.setOnItemClickListener(new OnItemClickListener() {
                  public void onItemClick(AdapterView<?> parent, View v,
                          int position, long id) {
                      String tst = "Pick";
                      String sel = path+"/"+clientPhotos[position];
                      listener.onImageSelected(sel);
                      }
              });
            m_dialog.dismiss();
        }

2 个答案:

答案 0 :(得分:0)

尝试在课程ProgressDialog

中初始化LoadPhoto

ProgressDialog mProgressDialog;

中声明LoadPhoto

并使用ProgressDialog show()的静态方法,

mProgressDialog = ProgressDialog.show(MainActivity.this, "Searching...", "Please wait while loading client photos...", true, true);

答案 1 :(得分:0)

发生这种情况的原因是处理器没有时间更新UI,因此您必须在循环中手动执行此操作。

我不是Android开发人员,但在java中,我通常会使用repaint();函数。

在c#中,这些简单的函数有助于更新控件,

textbox1.Invalidate();
textbox1.Update();
textbox1.Refresh();

我相信java可能有类似的功能。