2014-04-18 2 views
0

저는 내 dotnet webservice에서 데이터를 가져 와서 json 형식으로 결과를 내 안드로이드 응용 프로그램에 전달하려고했습니다. json 데이터는 invokeJSONWS을 호출하여 doInBackground 함수 (재정의 됨)에서 검색됩니다. 이것은 내가 publishProgress 메서드를 호출하려고 할 때 오류가 발생합니다. json 데이터를 publishProgress 메서드에 전달해야합니다. 반환 형식이 문자열 []이므로 publishProgress을 재정의해야합니다.AsyncTask를 확장하는 클래스에서 오류가 발생했습니다.

private class ChartTask extends AsyncTask< String,Void, Void>{ 

    // Generates dummy data in a non-ui thread 
    @Override 
    protected Void doInBackground(String... params) { 
     int i = 0; 
     invokeJSONWS(params[0],"PopulateCities"); 
     return null; 
     try{ 
      do{ 
       String [] values = new String[2]; 
       Random r = new Random(); 
       int visits = r.nextInt(27); 

       values[0] = Integer.toString(i); 
       values[1] = Integer.toString(visits); 

       publishProgress(values); 
           //Error here:The method publishProgress(Void...) in the type AsyncTask<String,Void,Void> is not applicable for the arguments (String[])      
       Thread.sleep(1000); 
       i++; 
      }while(i<=30); 
     }catch(Exception e){ } 
     return null; 
    } 

    // Plotting generated data in the graph 
    @Override 
    protected void onProgressUpdate(String[] values) { 
     visitsSeries.add(Integer.parseInt(values[0]), Integer.parseInt(values[1])); 
     mChart.repaint(); 
    } 
      //error here:The method onProgressUpdate(String[]) of type MainActivity.ChartTask must override or implement a supertype method 

} 


//Method which invoke web methods 
public void invokeJSONWS(String country, String methName) { 
    // Create request 
    SoapObject request = new SoapObject(NAMESPACE, methName); 
    // Property which holds input parameters 
    PropertyInfo paramPI = new PropertyInfo(); 
    // Set Name 
    paramPI.setName("country"); 
    // Set Value 
    paramPI.setValue(country); 
    // Set dataType 
    paramPI.setType(String.class); 
    // Add the property to request object 
    request.addProperty(paramPI); 
    // Create envelope 
    SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(
      SoapEnvelope.VER11); 
    envelope.dotNet = true; 
    // Set output SOAP object 
    envelope.setOutputSoapObject(request); 
    // Create HTTP call object 
    HttpTransportSE androidHttpTransport = new HttpTransportSE(URL); 

    try { 
     // Invole web service 
     androidHttpTransport.call(SOAP_ACTION+methName, envelope); 
     // Get the response 
     SoapPrimitive response = (SoapPrimitive) envelope.getResponse(); 
     // Assign it to static variable 
     responseJSON = response.toString(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    return true; 
} 

}

은이 문제에 밖으로 방법이 있나요? 미리 감사드립니다 !! 당신이 Void 진행 상황을 촬영했기 때문에

는 로그 캣 대신 당신이 String 진전을 기대로 String을 할 필요가있어,이

04-18 05:55:24.680: W/dalvikvm(1324): VFY: unable to resolve new-instance 430 (Lcom/google/gson/Gson;) in Lin/wptrafficanalyzer/achartenginedynamicchart/MainActivity; 
04-18 05:55:24.680: D/dalvikvm(1324): VFY: replacing opcode 0x22 at 0x000f 
04-18 05:55:24.820: E/dalvikvm(1324): Could not find class 'org.ksoap2.serialization.SoapObject', referenced from method in.wptrafficanalyzer.achartenginedynamicchart.MainActivity.invokeJSONWS 
04-18 05:55:24.820: W/dalvikvm(1324): VFY: unable to resolve new-instance 584 (Lorg/ksoap2/serialization/SoapObject;) in Lin/wptrafficanalyzer/achartenginedynamicchart/MainActivity; 
04-18 05:55:24.850: D/dalvikvm(1324): VFY: replacing opcode 0x22 at 0x0000 
04-18 05:55:24.850: D/dalvikvm(1324): DexOpt: unable to opt direct call 0x0c0f at 0x11 in Lin/wptrafficanalyzer/achartenginedynamicchart/MainActivity;.<init> 
04-18 05:55:24.860: D/dalvikvm(1324): DexOpt: unable to opt direct call 0x0fd1 at 0x04 in Lin/wptrafficanalyzer/achartenginedynamicchart/MainActivity;.invokeJSONWS 
04-18 05:55:24.860: D/dalvikvm(1324): DexOpt: unable to opt direct call 0x0fcd at 0x09 in Lin/wptrafficanalyzer/achartenginedynamicchart/MainActivity;.invokeJSONWS 
04-18 05:55:24.860: D/dalvikvm(1324): DexOpt: unable to opt direct call 0x0fd4 at 0x20 in Lin/wptrafficanalyzer/achartenginedynamicchart/MainActivity;.invokeJSONWS 
04-18 05:55:24.860: D/dalvikvm(1324): DexOpt: unable to opt direct call 0x0fd7 at 0x2d in Lin/wptrafficanalyzer/achartenginedynamicchart/MainActivity;.invokeJSONWS 
04-18 05:55:24.890: D/AndroidRuntime(1324): Shutting down VM 
04-18 05:55:24.900: W/dalvikvm(1324): threadid=1: thread exiting with uncaught exception (group=0xb2ac5ba8) 
04-18 05:55:24.920: E/AndroidRuntime(1324): FATAL EXCEPTION: main 
04-18 05:55:24.920: E/AndroidRuntime(1324): Process: in.wptrafficanalyzer.achartenginedynamicchart, PID: 1324 
04-18 05:55:24.920: E/AndroidRuntime(1324): java.lang.NoClassDefFoundError: com.google.gson.Gson 
04-18 05:55:24.920: E/AndroidRuntime(1324):  at in.wptrafficanalyzer.achartenginedynamicchart.MainActivity.<init>(MainActivity.java:43) 
04-18 05:55:24.920: E/AndroidRuntime(1324):  at java.lang.Class.newInstanceImpl(Native Method) 
04-18 05:55:24.920: E/AndroidRuntime(1324):  at java.lang.Class.newInstance(Class.java:1208) 
04-18 05:55:24.920: E/AndroidRuntime(1324):  at android.app.Instrumentation.newActivity(Instrumentation.java:1061) 
04-18 05:55:24.920: E/AndroidRuntime(1324):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2112) 
04-18 05:55:24.920: E/AndroidRuntime(1324):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
04-18 05:55:24.920: E/AndroidRuntime(1324):  at android.app.ActivityThread.access$800(ActivityThread.java:135) 
04-18 05:55:24.920: E/AndroidRuntime(1324):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
04-18 05:55:24.920: E/AndroidRuntime(1324):  at android.os.Handler.dispatchMessage(Handler.java:102) 
04-18 05:55:24.920: E/AndroidRuntime(1324):  at android.os.Looper.loop(Looper.java:136) 
04-18 05:55:24.920: E/AndroidRuntime(1324):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
04-18 05:55:24.920: E/AndroidRuntime(1324):  at java.lang.reflect.Method.invokeNative(Native Method) 
04-18 05:55:24.920: E/AndroidRuntime(1324):  at java.lang.reflect.Method.invoke(Method.java:515) 
04-18 05:55:24.920: E/AndroidRuntime(1324):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
04-18 05:55:24.920: E/AndroidRuntime(1324):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
04-18 05:55:24.920: E/AndroidRuntime(1324):  at dalvik.system.NativeStart.main(Native Method) 
04-18 05:55:38.600: I/Process(1324): Sending signal. PID: 1324 SIG: 9 
+0

당신의 무효 여기있는이'개인 클래스 ChartTask은 AsyncTask를 확장 <문자열, 무효, 무효> {'의 정수 다음 진행을 입력하면 ChartTask는 AsyncTask {'를 확장합니다. values는 문자열 배열입니다. – Raghunandan

+0

읽기 asynctask 제네릭 형식 @ http://developer.android.com/reference/android/os/AsyncTask.html – Raghunandan

답변

1

것 같습니다.

1

변경이이에

private class ChartTask extends AsyncTask< String,Void, Void>{ 

:

private class ChartTask extends AsyncTask<String, String, Void>{ 
+0

오류가 제거되었지만 응용 프로그램에서 응용 프로그램이 중지되었음을 알리는 오류가 발생합니다. – rawatdeepesh

+0

로그 추적 오류 스택 추적을 게시합니다. –

+0

질문을 편집하고 Logcat 항목을 내 친구, 감사합니다. – rawatdeepesh

관련 문제