本文介绍了"旋转轮"进度对话框而从SD卡中删除的文件夹的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我要显示简单的进度与转轮对话框,而从SD卡中删除的文件夹。我有下面这段code:

I want to display simple progress dialog with rotating wheel, while deleting folder from SD card. I have a following piece of code:

  ProgressDialog dialog = ProgressDialog.show(this, "",
            "Please wait for few seconds...", true);

private void deleteCache() {

    File f = new File(Environment.getExternalStorageDirectory()
            .getAbsoluteFile() + Constants.DATA_DIR);
    deleteDirectory(f);
    dialog.dismiss();
}

 private void deleteDirectory(File path) {
        if (path.exists()) {
            File[] files = path.listFiles();
            for (int i = 0; i < files.length; i++) {
                if (files[i].isDirectory()) {
                    deleteDirectory(files[i]);
                } else {
                    files[i].delete();
                }
            }
        }
        return (path.delete());
    }

这是为了显示前 deleteDirectory(F)对话框; 和dissmis它是结束之后。但我从来没有看到任何对话框,事件虽然该文件夹被删除。

Which is supposed to show dialog before deleteDirectory(f); and dissmis it after it ends. But I never see any dialog, event though the folder is being deleted.

推荐答案

修改您的code这个样子,

Modify your code like this,

 ProgressDialog dialog = ProgressDialog.show(this, "",
        "Please wait for few seconds...", true);
        new Thread(new Runnable() {
        public void run() {
              File f = new File(Environment.getExternalStorageDirectory()
        .getAbsoluteFile() + Constants.DATA_DIR);
deleteDirectory(f);
   private void deleteDirectory(File path) {
    if (path.exists()) {
        File[] files = path.listFiles();
        for (int i = 0; i < files.length; i++) {
            if (files[i].isDirectory()) {
                deleteDirectory(files[i]);
            } else {
                files[i].delete();
            }
        }
    }
    return (path.delete());
}


            handler.sendEmptyMessage(0);

        }
    }).start();

    handler = new Handler() {
        @Override
        public void handleMessage(Message msg) {

            try {



                progressDialog.dismiss();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            }
        }
    };

我不知道为什么会这样。由于您的code做一切在一个单独的线程,progressdialog不会很快出现。因此,而不是试图处理其他的事情在一个单独的线程处理这个问题。

I am not sure why this happens. Since your code does everything in a single thread, progressdialog will not show up quickly. So instead trying to handle other things in a separate thread handles this problem.

这篇关于&QUOT;旋转轮&QUOT;进度对话框而从SD卡中删除的文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-28 07:16