Android 如何使Progressdialog中的微调器旋转?

Android 如何使Progressdialog中的微调器旋转?,android,progressdialog,Android,Progressdialog,我已经实现了progressDialog,但当我的活动开始时,当它工作或从internet获取信息时,它不会旋转。我在Stackoverflow和其他地方尝试了许多解决方案,但它仍然没有旋转-progressDialog弹出正常,但轮子没有旋转。许多建议都同意使用AsyncTask,启动一个新的线程/runnable,而不是UI线程,但仍然没有成功。如果有任何解决办法,我将不胜感激 在Stackoverflow上帖子的帮助下,我在AsyncTask的OnPreExecute中尝试了这一点……但现

我已经实现了progressDialog,但当我的活动开始时,当它工作或从internet获取信息时,它不会旋转。我在Stackoverflow和其他地方尝试了许多解决方案,但它仍然没有旋转-progressDialog弹出正常,但轮子没有旋转。许多建议都同意使用AsyncTask,启动一个新的线程/runnable,而不是UI线程,但仍然没有成功。如果有任何解决办法,我将不胜感激

在Stackoverflow上帖子的帮助下,我在AsyncTask的OnPreExecute中尝试了这一点……但现在progressDialog甚至没有显示出来!:

 protected void onPreExecute() {
    super.onPreExecute();
    pDialog = new ProgressDialog(NewContact.this);
    new Thread(new Runnable() {
        @Override
        public void run() {
            // Showing progress dialog 
            pDialog.setMessage("Loading...");
            pDialog.show();
        }
    });
}
我一直在使用的代码显示progressDialog,但它没有旋转,它是:

 protected void onPreExecute() {
    pDialog = new ProgressDialog(NewContact.this);
    // Showing progress dialog before making http request
    pDialog.setMessage("Loading...");
    pDialog.show();
    super.onPreExecute();
}
以下是活动的完整代码结构:

public class NewContact extends AppCompatActivity implements android.widget.CompoundButton.OnCheckedChangeListener {
    private ProgressDialog pDialog;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_new_contact);
        StringRequest stringRequest = new StringRequest(Request.Method.POST, NewContact_URL,
                        new Response.Listener<String>() {
                            @Override
                            public void onResponse(String response) {

                            }
                        },
                        new Response.ErrorListener() {
                            @Override
                            public void onErrorResponse(VolleyError error) {

                            }

                        }) {

                    protected Map<String, String> getParams() {
                        Map<String, String> params = new HashMap<String, String>();

                        return params;
                    }


                };

            }



    // Load data in background
    class LoadContact extends AsyncTask<Void, Void, Void> {
        @Override
        protected void onPreExecute() {
            super.onPreExecute();

            pDialog = new ProgressDialog(NewContact.this);

            new Thread(new Runnable() {
                @Override
                public void run() {


                    // Showing progress dialog
                    pDialog.setMessage("Loading...");
                    pDialog.show();
                }
        });

        }

        @Override
        protected Void doInBackground(Void... voids) {

            }
            return null;
        }

        @Override
        protected void onPostExecute(Void aVoid) {
            super.onPostExecute(aVoid);
            hidePDialog();
        }
    }

    @Override
    protected void onResume() {
        super.onResume();
        LoadContact loadContact = new LoadContact();
        loadContact.execute();
    }

public void hidePDialog() {
    if (pDialog != null) {
        pDialog.dismiss();
        pDialog = null;
    }
}
}
我不记得曾经进入styles.xml并设置这些值。除了spinner之外,我的应用程序运行良好,但是=主题。。。styles.xml的部分都是红色的,当我将鼠标放在它们上面时,我会看到这样的消息:

Cannot resolve symbol 'Theme.AppCompat'
Cannot resolve symbol 'Theme.AppCompat.Light'  
Cannot resolve symbol 'Theme.AppCompat.Light.DarkActionBar' 

这可能与我的问题有关吗?

您不需要在新线程中将内容包装在onPreExecute中,您没有做任何会阻塞UI的事情。在返回null之前,似乎还有一个额外的结束括号。我把它改成这样:

 // Load data in background
class LoadContact extends AsyncTask<Void, Void, Void> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        pDialog = new ProgressDialog(MainActivity.this);
        // Showing progress dialog
        pDialog.setMessage("Loading...");
        pDialog.show();

    }

    @Override
    protected Void doInBackground(Void... voids) {
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        return null;
    }


    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        hidePDialog();
    }
}

在做了这些改变之后,它对我来说很好。需要检查的一件事是,您没有在设备的“开发人员选项”中关闭动画。如果它们被关闭,就像在浓缩咖啡测试中需要关闭一样,那么微调器将不会显示。

您以前显示进度对话框的方法是正确的。我认为进度对话框没有旋转,因为StringRequest在主UI线程上完成了一些繁重的工作,我无法理解StringRequest的作用是什么?请分享该活动的主题DownVoter:请评论原因。思考这个问题并尝试解决,但不知道如何解决,这就是我发布的原因。目前远离机器,稍后将发布主题,谢谢。字符串请求所做的只是从服务器获取一些小文本。@NileshRathod在my中添加了有关主题的信息question@CHarris你的原色和原色在哪里?我想我的问题与主题有关,还在研究中。不过对开发者的选择很感兴趣。
 // Load data in background
class LoadContact extends AsyncTask<Void, Void, Void> {
    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        pDialog = new ProgressDialog(MainActivity.this);
        // Showing progress dialog
        pDialog.setMessage("Loading...");
        pDialog.show();

    }

    @Override
    protected Void doInBackground(Void... voids) {
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        return null;
    }


    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
        hidePDialog();
    }
}