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

问题描述

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

自定义进度”对话框可在“活动”和“片段”中使用,但是当我们尝试在“对话片段”中显示自定义进度时,则不会显示加载器。

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

    /**
     * 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);

解决方法

也许您正在线程中或使用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();

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...