0

私は Android に単純な AsyncTask クラスを持っています。doInBackground が負を返すことを知っていても、常に onPostExecute メソッドに正の結果が渡されることに気付きました。

私のコードを見てください。このコードをデバッグで実行すると、例外ブロックに到達し、false が返されることを確認します。onPostExecuteには反映されません。

public class AsyncSendOSCTask extends AsyncTask<OSCMessage, Void, Boolean> {

private OSCPortOut oscPortOut;
private Activity activity;

public AsyncSendOSCTask(Activity activity, OSCPortOut oscPortOut) {
    this.activity = activity;
    this.oscPortOut = oscPortOut;
}   

@Override
protected Boolean doInBackground(OSCMessage... message) {
    try {

        this.oscPortOut.send(message[0]);
        return Boolean.TRUE;
    }
    catch(Exception exp) {
        return Boolean.FALSE;
    }
}



@Override
protected void onPostExecute(final Boolean result) {
    if(!result.booleanValue()) { // this is always true!!!          
        Toast.makeText(this.activity, "Error Sending OSC", Toast.LENGTH_SHORT).show();
    }
}

}

ここで何が欠けていますか?ご協力いただきありがとうございます...

4

1 に答える 1

0

その場合、あなたの問題はまだそこにあります:

plsはこれを試してください:

public class AsyncSendOSCTask extends AsyncTask {

プライベート OSCPortOut oscPortOut; プライベート アクティビティ activity;ブール値の examplebool; // examplebool を追加

public AsyncSendOSCTask(Activity activity, OSCPortOut oscPortOut) { this.activity = activity; this.oscPortOut = oscPortOut; }

@Override protected Boolean doInBackground(OSCMessage... メッセージ) { 試行 {

    this.oscPortOut.send(message[0]);
    examplebool=true; // added
    return(examplebool); //edited
}
catch(Exception exp) {
    examplebool=false; //added
    return(examplebool); //edited
} }

@Override protected void onPostExecute(final Boolean result) { if(!result.booleanValue()) { // これは常に真です!!!
Toast.makeText(this.activity, "OSC 送信エラー", Toast.LENGTH_SHORT).show(); } }

それは高速にハンドコーディングされており、テストされていないため、onPostExecute も変更できます。

于 2013-01-31T23:03:34.417 に答える