2015-12-10 69 views
2

我試圖更清楚地寫一些android代碼(避免課堂上的定義),但我偶然發現了凌亂的問題,例如, here,這似乎不工作!首先,這裏是我的代碼片:在android中排氣不再工作...?

public class ServiceStock { 

    public Context context; 

    private class ResponseListener implements Response.Listener<String> { 

     ResponseListener() { 
      Log.d("test Listener", "constructor"); 
     } 

     @Override 
     public void onResponse(String response) { 
      Log.d("test Listener:", response); 
     } 

    } 

    private class ErrListener implements Response.ErrorListener { 

     public Context context; 

     ErrListener(Context context) { 
      this.context = context; 
      Log.d("error Listener", "constructor"); 
     } 


     @Override 
     public void onErrorResponse(VolleyError error) { 
      Toast.makeText(this.context, "Did not work", Toast.LENGTH_SHORT).show(); 
      Log.d("error Listener", "error"); 
     } 


    } 

    public ServiceStock(Context context) 
    { 
     this.context = context; 
    } 

    public String getCurrentStockPrice(String symbol) { 
     Log.d("ServiceTest", "method_start"); 
     RequestQueue queue = Volley.newRequestQueue(this.context); 
     String url = "http://finance.yahoo.com/d/quotes.csv?s=" + symbol + "&f=sl1"; 

     ResponseListener listener = new ResponseListener(); 
     ErrListener error = new ErrListener(this.context); 
     StringRequest stringRequest = new StringRequest(
       Request.Method.GET, 
       url, 
       listener, 
       error 
     ); 
     Log.d("ServiceTest", "method_end"); 

     return "OK"; 

    } 
} 

正如人們可以看到的,我正在寫入日誌文件。我看到以下輸出:

0 20:01:54.215 3299-3299/com.impyiablue.stoxx D/ServiceTest: method_start 
12-10 20:01:54.229 3299-3299/com.impyiablue.stoxx D/test Listener: constructor 
12-10 20:01:54.229 3299-3299/com.impyiablue.stoxx D/error Listener: constructor 
12-10 20:01:54.238 3299-3299/com.impyiablue.stoxx D/ServiceTest: method_end 

但沒有別的。當使用listenererror實例時,我看不到日誌輸出。但他們中的一些必須使用!至少在我使用課堂上的定義時它是有效的。但是現在既沒有onResponse也沒有onErrorResponse被調用!?那麼發生了什麼以及如何解決它?

P.S .:也許有人有一個想法,如何使context處理有點複雜?哈......

+0

你還需要start.trigger要求?你只是創建stringRequest但不執行它!甚至沒有將它添加到請求隊列中? – AAnkit

+0

您是否將您的請求添加到抽象RequestQueue? –

+0

哦,我忽略了這荒謬的和毫無意義混亂和愚蠢的隊列中添加的東西!現在它的工作!謝謝!! – Alex

回答

1

凌空Android不工作了......?

如果實施正確,它可以正常工作。

這是您的代碼中的問題。

您正在創建stringRequest但未執行它!甚至沒有將它添加在請求隊列

RequestQueue queue = Volley.newRequestQueue(this/*ActivityContext*/); 
queue.add(stringRequest); // you need something like this. 

這是給你簡單的要求tutorial link

這是比較常見的錯誤在凌空實現人做。

2

你錯過了stringRequest加入到隊列

queue.add(stringRequest); 
+0

是的,這是我忽略了。爲了讓它變得非常複雜,爲什麼要在android中簡單易用! – Alex