実現したいこと
2つのAsyncTaskが終了すると「AsyncTaskが終了しました」というダイアログを表示したいです。
AsyncTaskが終了するのを待ってから処理を行うにはどうすればよいですか。
処理は、AsyncTaskBのonPostExecuteメソッドではなく、DialogButtonClickListenerクラスで行いたいです。
よろしくお願いします。
import android.app.AlertDialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.DialogFragment; import java.util.ArrayList; import java.util.List; public class DialogFragmentA extends DialogFragment { List<String> ListA = new ArrayList<>(); List<String> ListB = new ArrayList<>(); @Override public Dialog onCreateDialog(Bundle savedInstanceState) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setPositiveButton("AsyncTask実行", new DialogFragmentA.DialogButtonClickListener()); AlertDialog dialog = builder.create(); dialog.setCanceledOnTouchOutside(false); return dialog; } private class DialogButtonClickListener implements DialogInterface.OnClickListener { @Override public void onClick(DialogInterface dialog, int which) { switch (which) { case DialogInterface.BUTTON_POSITIVE: new AsyncTaskA().execute("args as doInBackground"); new AsyncTaskB().execute("args as doInBackground"); /*AsyncTaskAとAsyncTaskBが終了してから処理を実行したいです。 AsyncTaskBのonPostExecuteメソッドではなく、ここで実行したいです。*/ if (ListA.size() == 1 && ListB.size() == 1) { DialogFragmentB dialogFragment = new DialogFragmentB(); dialogFragment.show(getFragmentManager(), "DialogFragmentB"); } break; } } } class AsyncTaskA extends AsyncTask<String, List<String>, List<String>> { @Override protected void onPreExecute() { } @Override protected List<String> doInBackground(String... params) { ListA.add(""); return ListA; } @Override protected void onPostExecute(List<String> ListA) { } } class AsyncTaskB extends AsyncTask<String, List<String>, List<String>> { @Override protected void onPreExecute() { } @Override protected List<String> doInBackground(String... params) { ListB.add(""); return ListB; } @Override protected void onPostExecute(List<String> ListB) { } } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/02 00:36