2014-10-18 98 views
1

我有下面的代碼,因爲從本教程採取:http://developer.android.com/training/volley/simple.html覆蓋方法無法識別

 final TextView mResponse = (TextView) findViewById(R.id.response); 
     RequestQueue queue = Volley.newRequestQueue(this); 
     String url = "http://www.example.com/"; 

// Request a string response from the provided URL. 
     StringRequest stringRequest = new StringRequest(Request.Method.GET, url, 
       new Response.Listener() { 
        @Override 
        public void onResponse(String response) { 
         // Display the first 500 characters of the response string. 
         mResponse.setText("Response is: "+ response.substring(0,500)); 
        } 
       }, new Response.ErrorListener() { 
      @Override 
      public void onErrorResponse(VolleyError error) { 
       mResponse.setText("That didn't work!"); 
      } 
     }); 

然而,儘管onResponse()方法的匿名監聽器類中實現,響應。 Listener以紅色加下劃線,出現以下錯誤:「'派生自Listener的匿名類'必須被聲明爲抽象或在'Listener'中實現抽象方法'onResponse(T)'。我不完全確定它爲什麼沒有看到我完成了這個。

回答

1

Response.Listener是一個泛型類型。你必須指定:

new Response.Listener<String>() 
+0

這工作就像一個魅力,謝謝!我現在的問題是,如何將返回的'response'字符串保存到我可以在程序中使用的變量中?內部類顯然需要將它們訪問的變量聲明爲「final」,這會阻止我將「response」的值保存到預先聲明的字符串中。 – somecbusnerd 2014-10-18 21:14:06

+0

您將無法將新值賦給最終的String或者用一個字段響應爲Listener創建一個類,或者像你的問題中的代碼一樣設置響應。請注意Java中final關鍵字的含義 - 您聲明最終的TextView mResponse,以便您不能重新分配引用,但可以調用setter。 – bart 2014-10-20 14:20:54

0
compile 'dev.dworks.libs:volleyplus:+' 
compile 'com.android.volley:volley:1.0.0' 

當您使用兩個庫這個問題就來了。要解決該問題,只需刪除

compile 'com.android.volley:volley:1.0.0' 

您的代碼將正常工作。