1
  1. 在使用此代码执行 asynctask 之前,我在 progressdialog 中显示我的旋转动画

ProgressDialog pDialog = ProgressDialog.show(getActivity(), null, null, true, false); pDialog.setContentView(R.layout.loading);

这是R.layout.loadingxml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ln_loadingcontainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#00000000">

    <ProgressBar
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@android:style/Widget.ProgressBar.Large"
        android:layout_gravity="center"/>

    <TextView
        android:id="@+id/tv_loading"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Loading..."
        android:textSize="24dp"
        android:textColor="#ffffff"
        android:layout_marginTop="5dp"
        android:layout_gravity="center"/>
</LinearLayout>
  1. 然后我执行我的异步任务。asynctask doInbackground 我的 ProgressDialog 不显示动画时的问题。

  2. 在 asynctask onPostExecute 之后,我的 ProgressDialog 是开始动画。

为什么在 doInbackground 我的 ProgressDialog 不显示动画?

如何解决?

我想在执行异步任务之前在对话框内显示旋转动画,并在异步任务执行完成后隐藏对话框。

编辑

1.global variable of ProgressDialog

private ProgressDialog pDiaalog;

2.in oncreate of activity

gv_table.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        progressDialog = ProgressDialog.show(getActivity(), null, null, true, true);
        progressDialog.setContentView(R.layout.loading);

        MyTask t = new MyTask();
        t.execute();
    }
});

3.MyTask

private class MyTaskextends AsyncTask<String, Void, String>{

    public MyTask(){
    }

    @Override
    protected String doInBackground(String... params) {
        RunExecute();
        return null;
    }

    @Override
    protected void onPostExecute(String result) {
        if (pDialog != null) {
            if (pDialog.isShowing())
                pDialog.hide();
        }
    }

    @Override
    protected void onPreExecute() {
        if(IsShowProgress) {
            if (pDialog != null)
                pDialog.show();
        }

        super.onPreExecute();
    }

    @Override
    protected void onProgressUpdate(Void... values) {
    }
}

当 MyTask doInBackground 进度对话框不旋转时(doInBackground 使用时间约 5 秒)。但是在 onPostExecute 完成后它又开始旋转了。我通过禁止“pDialog.hide();”来测试它 在 onPostExecute 中;

4

1 回答 1

0
ProgressDialog pDialog;
onPreExecure()
pDialog = ProgressDialog.show(MainActivity.this, null, null, true, false); 
        pDialog.setContentView(R.layout.loading);
onPostExecute()
if(pDialog.isShowing())
{
    pDialog.dismiss();
}
于 2014-09-10T10:49:57.190 回答