チェックボックスがクリックされると、私のアプリは asynctask を実行します。メッセージを複数回記録することはできません。最初のクリックでは実行されますが、再度は実行されません。他の質問を見回した後、カスタム クラスを作成し、もちろん new MyAysncTask を呼び出す必要があると判断しましたが (これは既に行っていました)、まだ機能していません。
チェックボックスがクリックされたときに実行されるコードを次に示します。
cbJoining.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
new MyAsyncTask(EventID, cbJoining.isChecked(), URL_Race, sDates, sState ).execute();
}
});
カスタムクラスはこちら
class MyAsyncTask extends AsyncTask<Void, Void, Void>{
public String EventID;
public boolean bJoin;
public String URL_Race;
public String sDates;
public String sState;
public MyAsyncTask( String myEventID, boolean mybJoin, String myURL_Race, String mysDates, String mysState){
super();
EventID = myEventID;
bJoin = mybJoin;
URL_Race = myURL_Race;
sDates = mysDates;
sState = mysState;
}
protected void onPreExecute() {
};
@Override
protected Void doInBackground(Void... args) {
//Looper.prepare();
API oAPI = new API();
oAPI.Join(mPrefs, EventID, bJoin, URL_Race, sDates, sState);
Log.d("ASYNCTASK", URL_Race);
//Looper.loop();
return null;
}
protected void onPostExecute(Void result) {
Log.d("ASYNCTASK", "Finished");
};
}
例外は次のとおりです: 07-16 12:45:10.286: E/AndroidRuntime(28309): FATAL EXCEPTION: AsyncTask #2
07-16 12:45:10.286: E/AndroidRuntime(28309): java.lang.RuntimeException: doInBackground() の実行中にエラーが発生しました
07-16 12:45:10.286: E/AndroidRuntime(28309): android.os.AsyncTask$3.done(AsyncTask.java:299)
07-16 12:45:10.286: E/AndroidRuntime (28309): java.util.concurrent.FutureTask.finishCompletion (FutureTask.java:352) で
07-16 12:45:10.286: E/AndroidRuntime (28309): java.util.concurrent.FutureTask.setException (FutureTask.java:219) で
07-16 12:45:10.286: E/AndroidRuntime (28309): java.util.concurrent.FutureTask.run (FutureTask.java:239) で
07-16 12:45:10.286: E/AndroidRuntime(28309): android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
07-16 12:45:10.286: E/AndroidRuntime (28309): java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1080) で
07-16 12:45:10.286: E/AndroidRuntime(28309): java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) で
07-16 12:45:10.286: E/AndroidRuntime(28309): java.lang.Thread.run(Thread.java:856) で
07-16 12:45:10.286: E/AndroidRuntime(28309): 原因: java.lang.RuntimeException: Looper.prepare() を呼び出していないスレッド内でハンドラを作成できません
07-16 12:45:10.286: E/AndroidRuntime(28309): android.os.Handler で。(Handler.java:197)
07-16 12:45:10.286: E/AndroidRuntime(28309): android.os.Handler で。(Handler.java:111)
07-16 12:45:10.286: E/AndroidRuntime(28309): android.app.Activity で。(Activity.java:759)
07-16 12:45:10.286: E/AndroidRuntime(28309): com.chartermatrixllc.motocrossmatrix.API$FB で。(API.java:88)
07-16 12:45:10.286: E/AndroidRuntime (28309): com.chartermatrixllc.motocrossmatrix.API.Join (API.java:125) で
07-16 12:45:10.286: E/AndroidRuntime(28309): com.chartermatrixllc.motocrossmatrix.Race$MyAsyncTask.doInBackground(Race.java:207) で
07-16 12:45:10.286: E/AndroidRuntime(28309): com.chartermatrixllc.motocrossmatrix.Race$MyAsyncTask.doInBackground(Race.java:1) で
07-16 12:45:10.286: E/AndroidRuntime(28309): android.os.AsyncTask$2.call(AsyncTask.java:287)
07-16 12:45:10.286: E/AndroidRuntime (28309): java.util.concurrent.FutureTask.run で (FutureTask.java:234)
07-16 12:45:10.286: E/AndroidRuntime(28309): ... 4 つ以上