###onCreateメソッドの中だけでしかasynctaskが実行されません
onCreateメソッドではasynctaskが動くのですが、スピナーやボタンを押した時は動いてくれません。
この問題の解決方法がわかりません。
onCreateメソッド以外ではasynctaskを呼び出すことはできないのですか。それとも、呼び出し方が間違っているのですか。
発生している問題・エラーメッセージ
スピナーをクリックしたときのメッセージ W/System.err: java.lang.IllegalStateException: Observer android.widget.AbsListView$AdapterDataSetObserver@46ca7ff was not registered. at android.database.Observable.unregisterObserver(Observable.java:69) 08-27 11:20:30.856 11772-11814/com.example.sample.test W/System.err: at android.widget.BaseAdapter.unregisterDataSetObserver(BaseAdapter.java:42) at android.widget.ListView.setAdapter(ListView.java:472) at com.example.sample.test.MainActivity$AsyncTaskA.doInBackground(MainActivity.java:307) at com.example.sample.test.MainActivity$AsyncTaskA.doInBackground(MainActivity.java:256) at android.os.AsyncTask$2.call(AsyncTask.java:305) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761) ボタンをクリックしたときのメッセージ W/System.err: java.lang.IllegalStateException: Observer android.widget.AbsListView$AdapterDataSetObserver@46ca7ff was not registered. 08-27 11:21:53.449 11772-11825/com.example.sample.test W/System.err: at android.database.Observable.unregisterObserver(Observable.java:69) at android.widget.BaseAdapter.unregisterDataSetObserver(BaseAdapter.java:42) at android.widget.ListView.setAdapter(ListView.java:472) 08-27 11:21:53.450 11772-11825/com.example.sample.test W/System.err: at com.example.sample.test.MainActivity$AsyncTaskA.doInBackground(MainActivity.java:307) at com.example.sample.test.MainActivity$AsyncTaskA.doInBackground(MainActivity.java:256) at android.os.AsyncTask$2.call(AsyncTask.java:305) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 08-27 11:21:53.451 11772-11825/com.example.sample.test W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) at java.lang.Thread.run(Thread.java:761)
該当のソースコード
/*スピナーをクリックしたときの処理*/ private class selectSpinner implements AdapterView.OnItemSelectedListener { public void onItemSelected(AdapterView<?> parent, View arg1, int arg2, long arg3) { // 選択されているアイテムのIndexを取得 int idx = spinner.getSelectedItemPosition(); //IndexによってAsyncTaskの処理を変えたい if(idx == 0) { new AsyncTaskA().execute("args as doInBackground"); }else { new AsyncTaskB().execute("args as doInBackground"); } } public void onNothingSelected(AdapterView<?> parent) { } } /*通信がうまくいかなかったときにもう一度通信するボタン*/ private class retryListener implements View.OnClickListener{ @Override public void onClick(View view){ // 選択されているアイテムのIndexを取得 int idx = spinner.getSelectedItemPosition(); //IndexによってAsyncTaskの処理を変えたい if(idx == 0) { new AsyncTaskA().execute("args as doInBackground"); }else { new AsyncTaskB().execute("args as doInBackground"); } } }
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。