私はAsyncTask
に問題があります。 doInBackground
に特定のエラースローがキャッチされた場合、警告ダイアログを表示するにはpostExecute
が必要です。問題はpostExecute
が呼び出されないことです。私は@Override
を追加しようとしましたが、Android Studioはスーパークラスのメソッドをオーバーライドしていないと言います。また、戻り値の型を変更しようとしました。私はこのサイトを見渡して答えを見つけることができませんでした。前もって感謝します。onPostExecuteは呼び出されません
AsyncTaskクラス
public class AsyncTaskActivity extends AsyncTask<Void, Void, Void> {
String exception;
@Override
protected void onPreExecute() {
}
protected void onPostExecute() {
if (exception.contains("java.net.UnknownHostException")) {
MainActivity.showDialog();
Log.i("Error Message", "ERROR MESSAGE SHOWN");
}
}
@Override
protected Void doInBackground(Void... params) {
try {
Log.i("AsyncTask", "Loading...");
// Make a URL to the web page. This takes the string representation of the URL
// and changes it into a URL object
URL url = new URL("http://api.wunderground.com/api/0c0fcc3bf62ab910/conditions/q/IN/Fort_Wayne.json");
// Get the input stream through URL Connection
URLConnection con = url.openConnection();
InputStream is = con.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
// read each line and write to text file
while ((line = br.readLine()) != null) {
Log.i("AsyncTask", line);
TextEditor.file = new File(MainActivity.path, "siteInfo.txt");
TextEditor.writeString(line);
}
TextEditor.saveAndClose();
} catch (Exception e) {
e.printStackTrace();
exception = e.toString();
}
Log.i("AsyncTask", "DONE");
return null;
}
}
ShowDialogメソッド
public static void showDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.context);
builder.setView(R.layout.dialog_layout);
builder.setPositiveButton(
R.string.dialog_close,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
System.exit(1);
}
});
builder.show();
}
ルックを引き起こす可能性があり、あなたは例外を初期化する必要がありますのでご注意くださいドキュメントからonPostExecute()を呼び出すと、パラメータがありません。 –
onPostExecuteの@Overrideはどこですか? –