2011-07-30 13 views
2

何らかの理由で、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

Screenshot

+0

NullPointerはコードが実行されていないことを意味するものではありませんが、アクセスしようとしているオブジェクトの一部はnullです。おそらく上記コードの 'hook'です。 Asynctaskコードをここに追加してください。 – xandy

+0

@xandy eclipseでブレークポイントが起動していないので、実行していないことが分かります。なぜNullPointerExceptionが発生しているのか、私の主な問題ではないのです。私はクラス全体を投稿しました。 –

+0

まず、あなたのonPreExecute()には、@override装飾はありません。問題ではありませんが、追加してください。第二に、実際のコードを置かずに、 'hook.createD ...'を 'maybe i = 0;と置き換えてみてください。 i + = 10;私はそれを実行するのを止めるバグを見つけない限り、onPreExecute()はAPI内の何かであり、問​​題はありません。もう一つ、あなたの "コンストラクタ内の "ticker"もnullではありません。 – xandy

答えて

4

@OverrideはEclipseの問題(とメソッドが呼び出されていない理由)を引き起こしている理由は、あなたが入力ミスをしたということです。

あなたはそれをonPreExcecuteと呼んでいます( 'x'の後に 'c'があることに注意してください)。 onPreExecuteに修正し、@Overrideを使用してください。

+2

ありがとうございます。 ** facepalm ** –

+0

lol - 心配しないで、私たち全員が何らかの点でコーディングするときに似たようなことをしたことは確かです。私は私が知っている。 :) – Squonk

+0

プログラミングが大好き! –

関連する問題