2017-04-19 2 views
0

に変換することはできません。..互換性のない型:<匿名TextWatcher>は、私が「動的検索」を作るしようとしているコンテキスト

この断片が、私は要求を実装する場所です...ここで私は、エラー(エラーを得ました:(95,40)エラー:互換性のない型:コンテキストに変換できません)およびMySingleton.getInstance(this).addToRequestQueue(jsObjRequest);これは私がエラーを得たラインである

フラグメント:

public class CercaFragment extends Fragment { 

TextView textView; 
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup parent, Bundle savedInstanceState) { 

    View v = inflater.inflate(R.layout.cerca, parent, false); 


    textView = (TextView) v.findViewById(R.id.textView); 
    setHasOptionsMenu(true); 

    EditText search = (EditText)v.findViewById(R.id.editText); 

    search.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) {    // TODO Auto-generated method stub   } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) {     
      textView.setText(s); 

      String url = "http://api.geonames.org/searchJSON?q=londoz&maxRows=10&fuzzy=0.8&username=demo"; 

      JsonObjectRequest jsObjRequest = new JsonObjectRequest 
        (Request.Method.GET, url, null, new Response.Listener<JSONObject>() { 

         @Override 
         public void onResponse(JSONObject response) { 


          GeonamesClass example = new Gson().fromJson(response.toString(),GeonamesClass.class); 
                  textView.setText("Name"+example.getUsers().get(0).getName()); 
         } 
        }, new Response.ErrorListener() { 

         @Override 
         public void onErrorResponse(VolleyError error) { 
          // TODO Auto-generated method stub 

         } 
        }); 
      // Access the RequestQueue through your singleton class. 

      MySingleton.getInstance(this).addToRequestQueue(jsObjRequest); 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 

    }); 

    return v; 

} 
} 

MySingleton:あなたはイベント内でこのを行うと

public class MySingleton { 
    private static MySingleton mInstance; 
    private RequestQueue mRequestQueue; 
    private ImageLoader mImageLoader; 
    private static Context mCtx; 

private MySingleton(Context context) { 
    mCtx = context; 
    mRequestQueue = getRequestQueue(); 

    mImageLoader = new ImageLoader(mRequestQueue, 
      new ImageLoader.ImageCache() { 
       private final LruCache<String, Bitmap> 
         cache = new LruCache<String, Bitmap>(20); 

       @Override 
       public Bitmap getBitmap(String url) { 
        return cache.get(url); 
       } 

       @Override 
       public void putBitmap(String url, Bitmap bitmap) { 
        cache.put(url, bitmap); 
       } 
      }); 
} 

public static synchronized MySingleton getInstance(Context context) { 
    if (mInstance == null) { 
     mInstance = new MySingleton(context); 
    } 
    return mInstance; 
} 

public RequestQueue getRequestQueue() { 
    if (mRequestQueue == null) { 
     // getApplicationContext() is key, it keeps you from leaking the 
     // Activity or BroadcastReceiver if someone passes one in. 
     mRequestQueue = Volley.newRequestQueue(mCtx.getApplicationContext()); 
    } 
    return mRequestQueue; 
} 

public <T> void addToRequestQueue(Request<T> req) { 
    getRequestQueue().add(req); 
} 

public ImageLoader getImageLoader() { 
    return mImageLoader; 
} 

} 

答えて

2

、あなたはそうではありませんアプリケーションのコンテキストを参照するのではなく、イベントを生成するオブジェクトにコンテキストを渡すあなたのシングルトンでは、MySingleton.Getinstance(this)...イベントの外で行うか、代わりにそれがMySingleton.Getinstance。(getActivity())のような何かを呼び出す場所にある場合... ....

getActivity()私は 挨拶

+0

okokああおかげで役に立てば幸いコンテキストの参照に

をそのを呼び出すためにフラグメント内で呼び出されるメソッドです! !! –

関連する問題