- このコードで 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 を実行します。asynctask doInbackground my ProgressDialog がアニメーションを表示しないときの問題。
asynctask onPostExecute の後、私の ProgressDialog はアニメーションを開始します。
doInbackground で ProgressDialog がアニメーションを表示しないのはなぜですか?
それを解決する方法は?
asynctask 実行前にダイアログ内に回転アニメーションを表示し、asynctask 実行終了後にダイアログを非表示にしたい。
編集
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 のとき、progressdialog が回転しません (doInBackground の使用時間は約 5 秒です)。しかし、onPostExecute が終了すると、再び回転が始まります。「pDialog.hide();」を禁止することでテストします onPostExcute;