Android:执行我的asynctask立即崩溃应用程序

时间:2012-01-26 21:34:28

标签: android

我的TabActivity中有异步任务,虽然我以前一直在使用它,但它突然停止了。我必须改变一些事情。我在活动的构造函数中调用new CallWebServiceAd().execute();

我可以注释掉异步任务中的所有代码,但只是调用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();我不知道为什么它以前在工作。

1 个答案:

答案 0 :(得分:-1)

首先,请检查您的应用是否真的落入应用中。今天我浪费了一个小时才发现原因真的出现在其他活动中。

其次,如果它在此应用程序中,则在onCreate,onStart和onResume中放置断点。如果你没有最后两个,那就去做吧。所以,当它下降时,你会确切地知道。

第三,如果你从另一个活动进入这个活动,将第二个活动中的相同断点放入onStop,onDestroy和onPause。

很可能,你会看到解决方案。如果没有,请回来,在问题中加入更多信息,让我们思考。