何らかの理由で、onPreExecuteが呼び出されていません。コード:AsyncTask onPreExecuteが呼び出されていない
protected void onPreExcecute() {
hook.createDialog(ticker);
}
クラス全体:
package com.evandarwin.finance;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import android.content.Context;
import android.os.AsyncTask;
import android.widget.Toast;
public class GetTicker extends AsyncTask<String, Integer, String>{
private Context ctx;
private String ticker;
private SimpleFinanceActivity hook;
public GetTicker(Context ctx, String ticker, SimpleFinanceActivity hook) {
this.ctx = ctx;
this.ticker = ticker.toUpperCase();
this.hook = hook;
}
protected void onPreExcecute() {
hook.createDialog(ticker);
}
@SuppressWarnings("unused")
@Override
protected String doInBackground(String... params) {
try {
URL url = new URL("http://finance.yahoo.com/d/quotes.csv?s="+ticker+"&f=a");
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.setDoOutput(true);
urlConnection.connect();
InputStream is = urlConnection.getInputStream();
StringBuffer str = new StringBuffer();
int bufferLength = 0; //used to store a temporary size of the buffer
byte[] stream = new byte[1024];
while ((bufferLength = is.read(stream)) > 0) {
str.append(stream);
}
return str.toString();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e1) {
e1.printStackTrace();
}
return null;
}
protected void onPostExecute(String result) {
hook.destroyDialog();
Toast.makeText(ctx, result, Toast.LENGTH_LONG).show();
}
}
これは私にはNullPointerExceptionを与えている、私は私が前にこの問題を持っていたが、私は、私はそれを修正するために何をしたか覚えていません知っています。助けてください! :P
NullPointerはコードが実行されていないことを意味するものではありませんが、アクセスしようとしているオブジェクトの一部はnullです。おそらく上記コードの 'hook'です。 Asynctaskコードをここに追加してください。 – xandy
@xandy eclipseでブレークポイントが起動していないので、実行していないことが分かります。なぜNullPointerExceptionが発生しているのか、私の主な問題ではないのです。私はクラス全体を投稿しました。 –
まず、あなたのonPreExecute()には、@override装飾はありません。問題ではありませんが、追加してください。第二に、実際のコードを置かずに、 'hook.createD ...'を 'maybe i = 0;と置き換えてみてください。 i + = 10;私はそれを実行するのを止めるバグを見つけない限り、onPreExecute()はAPI内の何かであり、問題はありません。もう一つ、あなたの "コンストラクタ内の "ticker"もnullではありません。 – xandy