0
例外を適切に処理できないようです。それはどちらかの「ERROR」または「応用」の文字列を返しますが、Webページがダウンした場合、例外でConnectExceptionとSQLiteの例外が生成され、AsyncTaskによって呼び出されたメソッドで例外を処理できません。
private class PostData extends AsyncTask<String, Void, Void>
{
String response;
protected void onPreExecute()
{
apply.setText("APPLYING...");
}
@Override
protected Void doInBackground(String... params) {
try {
SendHTTPData sendHTTPData = new SendHTTPData();
response = sendHTTPData.sendData(params);
}
catch(Exception e)
{
Log.e("someTag", "Caught exception after doinbackground");
response = "ERROR!";
}
return null;
}
protected void onPostExecute()
{
apply.setText(response);
}
}
さて、sendData
メソッドが呼び出されるたびに:これは私の非同期メソッドであります私のボタンは「適用中」の状態で止まってしまいます。
sendData
メソッドでエラーが発生するたびに、ボタンテキストを「エラー」として設定したいとします。ここで
は、念のために私のsendHTTPDataクラスです:
public class SendHTTPData {
public String sendData(String...)
{
String POST_DATA = "switch=" + sw + ...
try {
URL update = new URL(Utils.WEB_URL+path+"?"+POST_DATA);
BufferedReader in = new BufferedReader(
new InputStreamReader(update.openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {}
in.close();
Log.w("someTag", "DONE GET RESPONSE");
if(inputLine=="1")
return "APPLIED";
else
return "ERROR";
}
catch (Exception e) {
Log.e("someTag", "ERROR BC OF EXCEPTION");
return "ERROR";
}
}
}
void戻り値の型のときにdoInBackgroundを使用して文字列を返す方法はありますか?また、コードが動作しない、私はそれを試してみました。 – Harsh
ここで値を変更して文字列を返します。 'AsyncTask'最後の文字列は戻り値の型です。おそらくAsyncTasksに関するドキュメントを読むべきです –
tyczj
また、私は文字列を返すために私の答えを編集しました – tyczj