自定义进度对话框在对话框片段中没有显示

3

无法在对话框片段上看到自定义进度对话框

自定义进度对话框可以在Activity和Fragment中工作,但是当我们尝试在Dialog Fragment中显示自定义进度时,加载器不会显示。

这是我的自定义对话框代码。

    /**
     * A simple {@link Fragment} subclass.
     */
    public class CustomAlertDialogFragment extends Dialog {
    
        /**
         * Instantiates a new Custom alert dialog fragment.
         *
         * @param context the context
         * @param text    the text
         */
        public CustomAlertDialogFragment(Context context, String text) {
                super(context, android.R.style.Theme_Holo_Dialog_NoActionBar);
                LayoutInflater inflater = (LayoutInflater) 
                context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                ProgressBar v = new ProgressBar(context);
                requestWindowFeature(Window.FEATURE_NO_TITLE);
                setContentView(v);
                setCancelable(false);
                getWindow().setBackgroundDrawableResource(android.R.color.transparent);
            }
    
    }

我用于显示加载器的代码如下:

     /**
         * Loading bar.
         *
         * @param enable the enable
         */
        public void loadingBar(boolean enable) {
            if (enable) {
    
                if (progressDialog == null) {
                    progressDialog = new CustomAlertDialogFragment(getActivity(), "");
                }
                if (!progressDialog.isShowing())
                    progressDialog.show();
            } else {
                dismissProgressBar();
            }
        }
    
        /**
         * Dismiss progress bar.
         */
        public void dismissProgressBar() {
            if (progressDialog != null && progressDialog.isShowing()) {
                progressDialog.dismiss();
    
        }

我正在调用loader,代码如下:

    loadingBar(true);
    File source = new File("/mnt/extSdCard/Audio"); 
    File dest = new File("/mnt/UsbDriveA/Dokita");
    copyDirectory(source, dest);
    loadingBar(false);

1
我认为你需要使用progressDialog.show()。 - Ahmed Elsayed
将您的问题从progressDialog.create()编辑为.show()后,仍然无法正常工作吗? - Ahmed Elsayed
仍然无法工作 - Vipin Chouhan
尝试调试您的代码,并确保调试器进入progressDialog.show()。 - Ahmed Elsayed
1个回答

3
也许您正在使用Thread或AsyncTask来运行长时间运行的任务(这些任务应在后台完成)。
将下面的代码实现到您的应用程序中。
Thread thread = new Thread() {
    @Override
    public void run() {
        loadingBar(true);
        File source = new File("/mnt/extSdCard/Audio"); // source of file
        File dest = new File("/mnt/UsbDriveA/Dokita"); // destination of file
        copyDirectory(source, dest);
        loadingBar(false);
    }
};
copyDirectory(source, dest); 
thread.start();

1
我已经尝试了上述解决方案,它运行良好。所以感谢您帮助我解决问题。 - Vipin Chouhan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接