2012-01-26 3 views
0

У меня есть задача async в моей TabActivity, и, хотя я использовал его раньше, он внезапно остановился. Я, должно быть, что-то изменил. Я вызываю new CallWebServiceAd().execute(); в конструкторе активности.Android: выполнение моего асинкстатного сбоя сразу сразу

Я могу прокомментировать весь код в задаче async, но появляется просто вызов asynctask сбой приложения.

я получаю:

01-26 16:27:04.196: E/AndroidRuntime(818): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.tca.app/com.tca.app.AndroidTabLayoutActivity}: java.lang.NullPointerException 
01-26 16:27:04.196: E/AndroidRuntime(818): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955) 
01-26 16:27:04.196: E/AndroidRuntime(818): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980) 
01-26 16:27:04.196: E/AndroidRuntime(818): at android.app.ActivityThread.access$600(ActivityThread.java:122) 
01-26 16:27:04.196: E/AndroidRuntime(818): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146) 
01-26 16:27:04.196: E/AndroidRuntime(818): at android.os.Handler.dispatchMessage(Handler.java:99) 
01-26 16:27:04.196: E/AndroidRuntime(818): at android.os.Looper.loop(Looper.java:137) 
01-26 16:27:04.196: E/AndroidRuntime(818): at android.app.ActivityThread.main(ActivityThread.java:4340) 
01-26 16:27:04.196: E/AndroidRuntime(818): at java.lang.reflect.Method.invokeNative(Native Method) 
01-26 16:27:04.196: E/AndroidRuntime(818): at java.lang.reflect.Method.invoke(Method.java:511) 
01-26 16:27:04.196: E/AndroidRuntime(818): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
01-26 16:27:04.196: E/AndroidRuntime(818): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
01-26 16:27:04.196: E/AndroidRuntime(818): at dalvik.system.NativeStart.main(Native Method) 
01-26 16:27:04.196: E/AndroidRuntime(818): Caused by: java.lang.NullPointerException 
01-26 16:27:04.196: E/AndroidRuntime(818): at com.tca.app.AndroidTabLayoutActivity.onCreate(AndroidTabLayoutActivity.java:51) 
01-26 16:27:04.196: E/AndroidRuntime(818): at android.app.Activity.performCreate(Activity.java:4465) 
01-26 16:27:04.196: E/AndroidRuntime(818): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049) 
01-26 16:27:04.196: E/AndroidRuntime(818): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919) 
01-26 16:27:04.196: E/AndroidRuntime(818): ... 11 more 

Вот асинхронная задача часть:

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 




     this.setTabs(); 
     new CallWebServiceAd().execute(); 

     System.out.println("Height"+tabHost.getHeight()); 

    } 

    public String getAd(){ 

       RestClient client = new RestClient("http://example.com"); 

      try { 
       client.Execute(RequestMethod.GET); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      String theResponse = client.getResponse(); 


      return theResponse; 

     } 

     public void parseJSONResponse(String jsonResponse) { 

      //using gson, place all the json into the SingleEvent object and then into a List 
      Type listType = new TypeToken<List<AdEvent>>(){}.getType(); 
      List<AdEvent> ad = new Gson().fromJson(jsonResponse, listType); 

      this.displayAd(ad); 



     } 


     private class CallWebServiceAd extends AsyncTask<String,String,String>{ 

      @Override 
      protected String doInBackground(String... arg0) { 
       // TODO Auto-generated method stub 



       return getAd(); 
      } 


      @Override 
      protected void onPostExecute(String result) { 

       parseJSONResponse(result); 

      } 


     } 

Я добавил OnCreate. Но, как я уже сказал, это новый CallWebServiceAd(). Execute(); Я не знаю, почему он работал раньше.

+2

опубликовать полный код, включая onCreate(). У вас есть исключение NullPointerException где-то там ... – LuxuryMode

+0

добавил onCreate. Вывод нового CallWebServiceAd заставляет его запускать. Так что это должно быть связано с этим. – Adam

ответ

-1

Во-первых, убедитесь, что ваше приложение действительно падает приложение. Сегодня я потратил впустую час, чтобы понять, что причина была в другом деле.

Во-вторых, если это приложение, установите точки останова в onCreate, onStart и onResume. Если у вас нет двух последних, сделайте их. Итак, вы точно поймете, когда он упадет.

В-третьих, если вы вступаете в эту деятельность от другого, поставьте те же точки останова в этом втором Управлении на onStop, onDestroy и onPause.

Возможно, вы увидите решение. Если нет, вернитесь, поместите больше информации в вопрос и давайте подумаем.

Смежные вопросы