0

json データを解析してオブジェクトに挿入する AsyncTask クラスがあります。通常のアクティビティ クラスで呼び出すと、データが解析されたことが示されますが、Application を拡張するクラスでこれを実行すると、結果はゼロになります。これが私のクラスです

public class AppGlobalData extends Application {
    public ArrayList<YoutubeItem> gotItem= new ArrayList<YoutubeItem>();
    private YouTubeParser parser;

    @Override
    public void onCreate() {
        // TODO Auto-generated method stub
        super.onCreate();


        new ParserLoader().execute();
    }

    public class ParserLoader extends AsyncTask<Void, Void, Void> {

        @Override
        protected Void doInBackground(Void... params) {
            Log.i("Succeed?", "Yes");
            parser = new YouTubeParser(
                    "http://powergroupbd.com/youtube/getyoutubejson.php");
            try {
                gotItem = parser.parseInitiator();
            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (JSONException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }


            return null;
        }

    }

    public ArrayList<YoutubeItem> getGotItem() {
        return gotItem;
    }

    public void setGotItem(ArrayList<YoutubeItem> gotItem) {
        this.gotItem = gotItem;
    }

}

問題がわかりません、誰か助けてくれませんか?このクラスは実行され、文字列をログに記録しますが、データは解析しないことに注意してください。

4

1 に答える 1

2

new ParserLoader().execute(); 非同期で作業を行います。アクティビティをロードして getGotItem() を呼び出すと、Asynctask が終了していない可能性があります

于 2013-09-12T20:46:30.633 に答える