2019 Aug. 18.
2019 Aug. 17.
(参考サイト)
https://teratail.com/questions/195681
https://akira-watson.com/android/asynctask.html
(MyActivity.java)
2019 Aug. 17.
(参考サイト)
https://teratail.com/questions/195681
https://akira-watson.com/android/asynctask.html
(MyActivity.java)
public class MyActivity extends AppCompatActivity { Button buttonOK; /* * MyAsyncTask内のListenerインターフェースを呼び出す */ private MyAsyncTask.Listener createListener() { return new MyAsyncTask.Listener() { /* * Listenerインターフェースの抽象メソッドonSuccessにコードを実装 */ @Override public void onSuccess(String result) { CODES_TO_RUN_AFTER_MyAsyncTask; } }; } /* * buttonOKがタップされたらMyAsyncTaskが呼び出される */ buttonOK.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { myAsyncTask = new MyAsyncTask(); /* * MyAsyncTask内のListenerインターフェース型変数listenerに * createListener()をセットする * createListener()ではListenerインターフェースの * 抽象メソッドonSuccessの実装コードが記述されている。 * MyAsyncTask内で"listener.onSuccess()"によって実装コードを実行できる。 */ myAsyncTask.setListener(createListener()); myAsyncTask.execute(); } }); }(MyAsyncTask.java)
public class MyAsyncTask extends AsyncTask{ private Listener listener; /* * 抽象メソッドonSuccess()は、MyAsyncTask内で実行させたい処理。 * 抽象メソッドonSuccess()は、MyAsyncTaskを呼び出すMyActivity内の * createListener()内で実装されている。 */ interface Listener { void onSuccess(String str); } void setListener(Listener listener) { this.listener = listener; } @Override protected String doInBackground(Void... params) { } @Override protected void onPostExecute(String result) { super.onPostExecute(result); CODES_TO_EXECUTE_onPostExecute; /* * onSuccess()メソッド実行 */ listener.onSuccess(result); return; } }
0 件のコメント:
コメントを投稿