2012-05-08 25 views
5

के साथ प्रगति संवाद मेरे पास 3 कक्षाएं हैं और वेब सेवा सेवा श्रेणी कहा जाता है क्लास Asynctask और doInBackgrnd() में मैं यूआरएल पास कर रहा हूं और मुझे webservice से डेटा मिल रहा है। लेकिन मैं इसे VerifyTeacherId नामक किसी अन्य वर्ग की विधि से कॉल कर रहा हूं। अब मैं प्रगति संवाद कैसे दिखा सकता हूं ??? मुझे pg.show और pg.dismiss कहां लिखना चाहिए ??? ???एसिन्टास्क

public class WebServiceClient extends AsyncTask<String, Void, String> 
{ 

private static final String base_path = "http://www.gdaschools.in/"; 
protected static final String SLASH = "/"; 


private ProgressDialog dialog; 
private Activity activity; 

public WebServiceClient(Activity activity) { 
     this.activity = activity; 
     this.dialog = new ProgressDialog(activity); 
    } 

    @Override 
    protected void onPreExecute() { 
      this.dialog.setMessage("Progress start"); 
      this.dialog.show(); 
     } 



@Override 
protected String doInBackground(String... params) { 

    StringBuffer sb = new StringBuffer(); 
    sb.append(base_path); 
    sb.append(params[0]); 
    HttpRetriever retrieveResponse = new HttpRetriever(); 
    retrieveResponse.retrieve(sb.toString()); 
    return retrieveResponse.getResponseXml(); 
} 



@Override 
protected void onPostExecute(String result) { 
    if (this.dialog.isShowing()) { 
      this.dialog.dismiss(); 
    } 
} 
} 

और विधि मैं जहां हूं बुला SelectOptionActivity नामक एक अन्य वर्ग में यह है। विधि है

public void verifyTeacherId(View view) 
{ 
    teacherIdString = TeacherId.getText().toString().trim(); 

    clientThread = new WebServiceClient(SelectOptionActivity.this); 
    clientThread.execute("teacher/" + teacherIdString);  

    try 
    { 
     String xml = clientThread.get(); 

     DocumentBuilderFactory factory1 = DocumentBuilderFactory.newInstance(); 
     factory1.setNamespaceAware(true); 
     try 
     { 
      DocumentBuilder builder = factory1.newDocumentBuilder(); 
      Document doc =builder.parse(new InputSource(new StringReader(xml))); 
      Element root = doc.getDocumentElement(); 
      if (doc != null) 
      { 
        NodeList nl = doc.getElementsByTagName("empId"); 
        if (nl.getLength() > 0) 
        { 
         Node node = nl.item(0); 
         responseTeacherId = node.getTextContent(); 
        } 
        NodeList n2=doc.getElementsByTagName("empName"); 
        if (n2.getLength() > 0) 
        { 
         Node node = n2.item(0); 
         responseTeacherName = node.getTextContent(); 

        } 
      } 

      Toast.makeText(getBaseContext(),""+responseTeacherId,10).show(); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } catch (InterruptedException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (ExecutionException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

की तरह अब हो रही त्रुटि
05-08 12:10:10.834: D/AndroidRuntime(524): Shutting down VM 
05-08 12:10:10.834: W/dalvikvm(524): threadid=1: thread exiting with uncaught exception (group=0x40014760) 
05-08 12:10:10.872: E/AndroidRuntime(524): FATAL EXCEPTION: main 
05-08 12:10:10.872: E/AndroidRuntime(524): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.GDAProj/com.GDAProj.SelectOptionActivity}: java.lang.NullPointerException 
05-08 12:10:10.872: E/AndroidRuntime(524): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1739) 
05-08 12:10:10.872: E/AndroidRuntime(524): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1831) 
05-08 12:10:10.872: E/AndroidRuntime(524): at android.app.ActivityThread.access$500(ActivityThread.java:122) 
05-08 12:10:10.872: E/AndroidRuntime(524): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1024) 
05-08 12:10:10.872: E/AndroidRuntime(524): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-08 12:10:10.872: E/AndroidRuntime(524): at android.os.Looper.loop(Looper.java:132) 
05-08 12:10:10.872: E/AndroidRuntime(524): at android.app.ActivityThread.main(ActivityThread.java:4123) 
05-08 12:10:10.872: E/AndroidRuntime(524): at java.lang.reflect.Method.invokeNative(Native Method) 
05-08 12:10:10.872: E/AndroidRuntime(524): at java.lang.reflect.Method.invoke(Method.java:491) 
05-08 12:10:10.872: E/AndroidRuntime(524): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
05-08 12:10:10.872: E/AndroidRuntime(524): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
05-08 12:10:10.872: E/AndroidRuntime(524): at dalvik.system.NativeStart.main(Native Method) 
05-08 12:10:10.872: E/AndroidRuntime(524): Caused by: java.lang.NullPointerException 
05-08 12:10:10.872: E/AndroidRuntime(524): at android.content.ContextWrapper.getApplicationInfo(ContextWrapper.java:132) 
05-08 12:10:10.872: E/AndroidRuntime(524): at android.view.ContextThemeWrapper.getTheme(ContextThemeWrapper.java:65) 
05-08 12:10:10.872: E/AndroidRuntime(524): at android.app.AlertDialog.resolveDialogTheme(AlertDialog.java:120) 
05-08 12:10:10.872: E/AndroidRuntime(524): at android.app.AlertDialog.<init>(AlertDialog.java:80) 
05-08 12:10:10.872: E/AndroidRuntime(524): at android.app.ProgressDialog.<init>(ProgressDialog.java:76) 
05-08 12:10:10.872: E/AndroidRuntime(524): at com.GDAProj.WebServiceClient.<init>(WebServiceClient.java:20) 
05-08 12:10:10.872: E/AndroidRuntime(524): at com.GDAProj.SelectOptionActivity.<init>(SelectOptionActivity.java:70) 
05-08 12:10:10.872: E/AndroidRuntime(524): at java.lang.Class.newInstanceImpl(Native Method) 
05-08 12:10:10.872: E/AndroidRuntime(524): at java.lang.Class.newInstance(Class.java:1301) 
05-08 12:10:10.872: E/AndroidRuntime(524): at android.app.Instrumentation.newActivity(Instrumentation.java:1022) 
05-08 12:10:10.872: E/AndroidRuntime(524): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1730) 
05-08 12:10:10.872: E/AndroidRuntime(524): ... 11 more 

उत्तर

11

अपने वर्तमान गतिविधि के पास संदर्भ वर्ग AsyncTask और onPreExecute() में इस संदर्भ शो प्रगति संवाद का उपयोग और खारिज करने के लिए यह onPostExecute()

public class WebServiceClient extends AsyncTask<String, Void, String> 
{ 
private static final String base_path = "http://www.gdaschools.in"; 
protected static final String SLASH = "/"; 
private ProgressDialog dialog; 
private Activity activity; 

public WebServiceClient(Activity activity) { 
    this.activity = activity; 
    this.dialog = new ProgressDialog(activity); 
} 

@Override 
protected void onPreExecute() { 
     this.dialog.setMessage("Progress start"); 
     this.dialog.show(); 
    } 

@Override 
    protected void onPostExecute(final Boolean success) { 
     if (this.dialog.isShowing()) { 
      this.dialog.dismiss(); 
     } 

. 
. 
. 

कोड केवल आपकी समझ के लिए है ..

+1

+1 मैं इस समाधान के साथ जाऊंगा। –

+0

महोदय, मैं इसे विभिन्न गतिविधियों से कॉल करना चाहता हूं। तो क्या यह WebServiceClient क्लाइंट थ्रेड = नया वेब सेवा क्लाइंट (SelectOptionActivity.this) जैसे कॉल करने का सही तरीका है; क्योंकि मुझे फिर से त्रुटि मिल रही है – samir

+0

@ user370305 सर ने त्रुटि पोस्ट की है। Plz मदद – samir

2

गतिविधि का उदाहरण शून्य है क्योंकि आप ऑनक्रेट फ़ंक्शन से पहले WebServiceClient का ऑब्जेक्ट बना रहे हैं। गतिविधि या संदर्भ पारित करते समय यह सुनिश्चित करें कि गतिविधि ने अन्य बुद्धिमानों को बनाया है, यह शून्य हो जाएगा और आपको यह त्रुटि

+0

धन्यवाद दोस्त। वास्तव में सहायक था। दुख की बात है कि मेरे पास केवल एक स्वीकृति शक्ति थी। – samir

+0

@ सैमिरसिंह आप उत्तर दे सकते हैं –