
我的Eclipse在getInstance(this)中给出了错误,因为这是上下文而我正在请求一个图像.
ImageRequest request = new ImageRequest( url,new Response.Listener<Bitmap>() { @OverrIDe public voID onResponse(Bitmap bitmap) { mNetworkImageVIEw = (NetworkImageVIEw) findVIEwByID(R.ID.ImageVIEw); mImageLoader = MySingleton.getInstance(this).getimageLoader(); mNetworkImageVIEw.setimageUrl(IMAGE_URL,mImageLoader); // mImageLoader = MySingleton.getInstance(this).getimageLoader(); // mImageLoader.get(IMAGE_URL,ImageLoader.getimageListener(mImageVIEw,// R.drawable.ic_launcher,R.drawable.ic_launcher)); } },null,new Response.ErrorListener() { public voID onErrorResponse(VolleyError error) { // mImageVIEw.setimageResource(R.drawable.ic_launcher); } });MySingleton.getInstance(this).addToRequestQueue(request); 这是单身人士:
package com.example.p;import com.androID.volley.Request;import com.androID.volley.RequestQueue;import com.androID.volley.toolBox.ImageLoader;import com.androID.volley.toolBox.Volley;import androID.content.Context;import androID.graphics.Bitmap;import androID.support.v4.util.LruCache;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; }} 我能够以这种方式获取图像并显示它,但我需要缓存它,所以我想将它添加到请求中吗? ..有什么帮助吗?
mNetworkImageVIEw = (NetworkImageVIEw) findVIEwByID(R.ID.ImageVIEw);mImageLoader = MySingleton.getInstance(this).getimageLoader();mNetworkImageVIEw.setimageUrl(IMAGE_URL,mImageLoader);解决方法 这是我的工作示例代码.希望这个帮助:
MainActivity.java:
import ...public class MainActivity extends Activity { final Context mContext = this; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); NetworkImageVIEw mNetworkImageVIEw = (NetworkImageVIEw) findVIEwByID(R.ID.networkImageVIEw); String mUrl = "http://192.168.0.100/API/getimage"; mNetworkImageVIEw.setimageUrl(mUrl,VolleySingleton.getInstance(mContext).getimageLoader()); } ... } VolleySingleton.java:
public class VolleySingleton { private static VolleySingleton mInstance; private RequestQueue mRequestQueue; private ImageLoader mImageLoader; private static Context mContext; private VolleySingleton(Context context) { mContext = context; mRequestQueue = getRequestQueue(); mImageLoader = new ImageLoader(mRequestQueue,new ImageLoader.ImageCache() { private final LruCache<String,Bitmap> cache = new LruCache<>(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 VolleySingleton getInstance(Context context) { if (mInstance == null) { mInstance = new VolleySingleton(context); } return mInstance; } private 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(mContext.getApplicationContext(),10 * 1024 * 1024); // this for caching } return mRequestQueue; } public <T> voID addToRequestQueue(Request<T> req) { getRequestQueue().add(req); } public ImageLoader getimageLoader() { return mImageLoader; } } activity_main.xml中:
<linearLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="fill_parent" androID:layout_height="wrap_content" androID:orIEntation="vertical" tools:context=".MainActivity"> <com.androID.volley.toolBox.NetworkImageVIEw androID:ID="@+ID/networkImageVIEw" androID:layout_wIDth="match_parent" androID:layout_height="wrap_content" /> </linearLayout>
AndroIDManifest.xml中:
<?xml version="1.0" enCoding="utf-8"?><manifest xmlns:androID="http://schemas.androID.com/apk/res/androID" package="com.example.volleyapp" > <uses-permission androID:name="androID.permission.INTERNET" /> <application androID:allowBackup="true" androID:icon="@mipmap/ic_launcher" androID:label="@string/app_name" androID:theme="@style/Apptheme" > <activity androID:name=".MainActivity" androID:label="@string/app_name" > <intent-filter> <action androID:name="androID.intent.action.MAIN" /> <category androID:name="androID.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>总结
以上是内存溢出为你收集整理的添加ImageLoader时,getInstance(this)中的Android Volley错误全部内容,希望文章能够帮你解决添加ImageLoader时,getInstance(this)中的Android Volley错误所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)