- 在使用此代码执行 asynctask 之前,我在 progressdialog 中显示我的旋转动画
ProgressDialog pDialog = ProgressDialog.show(getActivity(), null, null, true, false); pDialog.setContentView(R.layout.loading);
这是R.layout.loading
xml
<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>
然后我执行我的异步任务。asynctask doInbackground 我的 ProgressDialog 不显示动画时的问题。
在 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 中;