私のウェブサイトからファイルをロードする次のコードがあります
class DownloadTT4FileTask extends AsyncTask<String, String, String> {
private Context mContext;
private String mFilename;
private ProgressDialog progressDialog;
String retString="";
public DownloadTT4FileTask(Context context, String filename) {
mContext=context;
mFilename=filename;
}
@Override
protected void onPreExecute() {
Log.d("DownloadTT4FileTask", "onPreExecute");
progressDialog = ProgressDialog.show(mContext, mFilename, "Loading. Please wait...");
}
protected String doInBackground(String... args) {
URL url;
try {
url = new URL(args[0]);
java.net.URLConnection con = url.openConnection();
con.connect();
//Log.d("DownloadTT4FileTask", "con.connect ok ");
java.io.BufferedReader in = new java.io.BufferedReader(new java.io.InputStreamReader(con.getInputStream()));
String line;
for (; (line = in.readLine()) != null; ) {
// just read the line and save it
retString += line+"\n";
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return retString;
}
protected void onPostExecute(String result) {
Log.d("DownloadTT4FileTask", "onPreExecute");
progressDialog.dismiss();
}
};
// loading from website
filename = "http://2112design.com/tabs/"+band+"/"+song+".tt4";
String fileContents = new DownloadTT4FileTask(context, filename).execute(filename).get(15L, TimeUnit.SECONDS);
br = new BufferedReader(new StringReader(fileContents));
正常に読み込まれますが (読み込みに約 5 秒かかります)、進行状況ダイアログが少しずれています。ダウンロードの開始時に画面に表示されません。タスクの最後に、画面上で短く点滅します。
これを使用する方法の多くの例を見てきましたが、これはかなり普通のコードのようです。
多分文脈が問題ですか?主なアクティビティではないフラグメントで実行されている onChildClick から取得します。メイン アクティビティ コンテキストを使用しようとしましたが、クラッシュしました。
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
Globals.mDoc.OpenTT4Document(parent.getContext(), band, song, mRemoteFilesThis==null ? Doc.SDCARD : Doc.WEBSITE);
return false;
}
何か案は?ありがとう