0

アプリを作成しましたが、Android 2.3.3 では正しく動作しますが、Android 4.0.3 では動作しません。

AndroidManifest ファイルで minsdk="10" と targetsdk="15" を指定します。

アプリで .net Web サービスを使用していますが、このページでエラーが発生します。

myspinner = (Spinner) findViewById(R.id.ihtiyacsec);
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, SektorList);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        myspinner.setAdapter(adapter);

SektorList がヌルです。

Web サービスへのアクセスに ksoap2 を使用しています。

これが私の機能です

SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
        SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
        envelope.bodyOut=request;
        envelope.dotNet = true;     
        envelope.setOutputSoapObject(request);
        HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
        androidHttpTransport.debug = true;

       try {

       androidHttpTransport.call(SOAP_ACTION, envelope);
       SoapObject response = (SoapObject) envelope.getResponse();
       SektorList = new String[response.getPropertyCount()];

      for(int i=0;i<response.getPropertyCount();i++){          
               SektorList[i] = response.getPropertyAsString(i).toString();     
      }      
} 
        catch (Exception e) {           
            e.printStackTrace();
       }

プロジェクトをデバッグすると、androidHttpTransport.call(SOAP_ACTION, エンベロープ) が機能せず、コンパイラが catch ブロックにジャンプします。

私は自分の石鹸アクションが正しいことを知っています (2.3.3 でも同じコードが機能します)。

何が問題なのかわからない?

4

2 に答える 2

1

メインスレッドで (潜在的に遅い) ネットワーク操作を実行しています。ターゲット SDK が 11 (Honeycomb) 以上の場合、これはNetworkOnMainThreadExceptionon Honeycomb 以上をスローします。これは、この動作が UI をブロックし、アプリが応答しなくなる可能性があるためです。

AsyncTaskを使用してこれを回避し、 にデータをロードできますdoInBackground(..)

于 2012-08-08T13:48:00.813 に答える
0

それは非常に一般的な問題です。Android HC+ の時点では、メイン UI スレッドで大量のネットワーク操作を実行することは許可されていません。この問題を解決するには、マニフェストから「targetsdk」タグを削除するか (推奨されません)、ネットワーク操作に asynctask を使用します。

于 2012-08-08T13:48:58.773 に答える