このコードはUIスレッドで使用したときに機能しましたが、AsyncTaskクラスに移動する必要がありました。私はちょうどこれを行う方法を読んで終わったが、私はそれがクラスを読み始めたときに今クラッシュしているアプリを実行するとき。AsyncTaskクラスはXMLを解析します
クラスは、XMLファイルをリストにロードする前にそれを呼び出して解析します。これは私の最初のAndroidアプリなので、あなたが提供できるヘルプは丁寧です。
おかげ
public class DownloadXml extends AsyncTask<String, Void, String>
{
private ProgressDialog pd;
protected String doInBackground(String... platform)
{
pd = ProgressDialog.show(CategoryData.this, "Please Wait...", "Loading games");
try
{
BaseFeedParser parser = new BaseFeedParser();
messages = parser.parse();
}
catch (Throwable t)
{
Log.e("RetailApp",t.getMessage(),t);
}
return rowPlatform;
}
protected void onPostExecute(String rowPlatform)
{
productList = new ArrayList<HashMap<String, Object>>();
for (Message msg : messages)
{
if(msg.getPlatform().compareTo(rowPlatform) == 0)
{
HashMap<String, Object> map = new HashMap<String, Object>();
map.put("Title", msg.getTitle());
map.put("Brand", msg.getBrand());
map.put("Price", "$" + msg.getPrice());
try
{
String picture[] = msg.getImage().split("-large.jpg");
URL pictureURL = new URL(picture[0] + "-medium.jpg");
Bitmap bitmap = BitmapFactory.decodeStream(pictureURL.openStream());
map.put("Img",bitmap);
}
catch (Throwable t)
{
Log.e("RetailApp",t.getMessage(),t);
}
productList.add(map);
}
}
編集:私はonPostExecuteに「for」ループに移動していると、それはコードを向上させるように見えるが、私はまだエラー「まだロックされた未登録のハンドル」を受け付けております。何か案は?
アイデアロブをありがとうしかし、運は、背景からループやトーストを削除した...新しいコードを上記の。
、アイデアロブが、運用 – Rob
おかげで、このような背景...新しいコードからのループとトーストを削除したことを削除してください。 "キャッチされていないハンドラ:キャッチされていない例外のためにスレッドAsycTask#1が終了しました"というエラーを受け取っています – pommi
完全なスタックトレースを提供してください。これは重要。また、例外が発生した場合には、行を丸めてください。最後に、 'rowPlatform'はどこから来ますか? – WarrenFaith