インターネットから XML ファイルを解析し、その内容を TextView に表示するプロジェクトに取り組んでいます。
手順:ボタンをクリックすると、インターネットから xml をフェッチしている Prediction クラスに転送されますが、Async Progress ダイアログを追加します。コーディングにエラーはありませんが、アプリケーションを実行するとエミュレーターでは、「エラー」というキャッチ例外メッセージが表示されますが、ASync プログレス ダイアログの追加前に以前に表示されていた「情報」は表示されません。
public class Prediction extends Activity{
static final String baseUrl = "http://astroyogi.in/testandroid/Tarot/Tarot_Android.xml";
TextView tv1;
ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.prediction);
grabURL("http://astroyogi.in/testandroid/Tarot/Tarot_Android.xml");
tv1 = (TextView) findViewById(R.id.tv1);
}
public void grabURL(String url) {
new GrabURL().execute(url);
}
private class GrabURL extends AsyncTask<String, Void, Void> {
private ProgressDialog Dialog = new ProgressDialog(Prediction.this);
static final String baseUrl = "http://astroyogi.in/testandroid/Tarot/Tarot_Android.xml";
protected void onPreExecute() {
Dialog.setMessage("Downloading source..");
Dialog.show();
}
@Override
protected Void doInBackground(String... params) {
// TODO Auto-generated method stub
try{
URL website = new URL(baseUrl);
SAXParserFactory spf = SAXParserFactory.newInstance();
SAXParser sp = spf.newSAXParser();
XMLReader xr = sp.getXMLReader();
Handlingpastxml doingWork = new Handlingpastxml();
xr.setContentHandler(doingWork);
xr.parse(new InputSource(website.openStream()));
String information = doingWork.getInformation();
tv1.setText(information);
}
catch(Exception e){
tv1.setText(e.getMessage());
}
return null;
}
protected void onPostExecute(Void unused) {
Dialog.dismiss();
}
}
}