Application クラスを拡張して、アクティビティが起動する前にデータをロードするクラスがあります。そこでjsonの解析を行いましたが、問題はdoInBackground
、アプリケーションクラスで終了する前にアクティビティクラスが呼び出されていることです。そのため、値のない変数を初めて取得するのはそのためです。これが私のコードです。解決策が必要です。助けてください!
public class AppGlobalData extends Application {
public ArrayList<YoutubeItem> gotItem = new ArrayList<YoutubeItem>();
public YouTubeParser parser;
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
parser = new YouTubeParser(
"http://powergroupbd.com/youtube/getyoutubejson.php");
new ParserLoader().execute();
}
public class ParserLoader extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
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;
}
}
別のポイントは、データを解析するとonCreate
、Androidの下位バージョンで機能しますが、ICSではネットワークメインスレッド例外が発生することです。