0

まず、この例外の意味をよく知っていることを説明します。回答する場合は、質問をよくお読みください。

ネットワークスレッドでUI作業を行おうとすると、例外が発生することを私は知っています。AsyncTaskを使用していますが、UI操作を行っています。

これは、エラーがスローされているAsyncTaskコードのスニペットです。注apsとadmは、事前に宣言されています。Extracterの初期化では、例外がスローされています。

    do{
            try{

                HttpPost request = new HttpPost(params[0]);
                request.setHeader("Accept", "application/json");
                request.setHeader("Content-type", "application/json");
                aps.setLastSent(lastSent);
                StringEntity filterEntity = new StringEntity(aps.TempParameter()); //Remember this TempParameter is temporary function
                request.setEntity(filterEntity);
                response = httpClient.execute(request);
                StatusLine statusLine = response.getStatusLine();
                if(statusLine.getStatusCode() == HttpStatus.SC_OK){
                    Extracter extracter = new Extracter(response);
                    lastSent = extracter.extractLastSent();
                    adm.addDictionary(extracter.extractDictionary());
                }
            } catch (ClientProtocolException e) {
                //TODO Handle problems..
                builder.append("Client protocol exception");
            } catch (IOException e) {
                //TODO Handle problems..
                builder.append(e.toString());
            }
        }while(lastSent != "done");

            return adm.getAlarmObjectList();

この線

    Extracter extracter = new Extracter(response);

例外がスローされる場所です。Extracterクラスのコードは次のとおりです。

    public class Extracter extends AlarmLoopTestActivity {



private JSONObject jo;
private JSONArray ja;

public Extracter(HttpResponse response){
    StringBuilder builder = new StringBuilder();
    HttpEntity entity = response.getEntity();
    try {
        InputStream content = entity.getContent();
        BufferedReader reader = new BufferedReader(new InputStreamReader(content));
        String line;
        while((line = reader.readLine())!= null){
            builder.append(line);
        }
    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    String json = builder.toString();
    try {
        jo = (JSONObject) new JSONTokener(json).nextValue();
        ja = jo.getJSONArray("effectNamesDict");
    } catch (JSONException e) {
        jo = null;
        e.printStackTrace();
    }

}

PrintingStackTraceはUIイベントとは見なされないと思います。それ以外は、私は途方に暮れています。私はこれに新しい目を向ける必要があります。さらに詳しく説明する必要がある場合はお知らせください。

4

1 に答える 1

0

あなたExtracterはこれがアンドロイドアクティビティであるという名前からクラスを拡張しているAlarmLoopTestActivityので、おそらくそこにいくつかのUIインタラクションメソッドがあります!

于 2012-05-18T23:17:43.813 に答える