Я новичок в андроид программирование и столкнулся вот с такой проблемой который сам не смог решить. Полный текст ошибки выглядит так:
10-28 10:41:38.752 7392-7392/com.jumagames.birdseggs E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.jumagames.birdseggs, PID: 7392
java.lang.NullPointerException: Attempt to invoke virtual method 'com.android.volley.Request com.android.volley.RequestQueue.add(com.android.volley.Request)' on a null object reference
at com.android.volley.toolbox.ImageLoader.get(ImageLoader.java:255)
at com.android.volley.toolbox.ImageLoader.get(ImageLoader.java:193)
at com.android.volley.toolbox.ImageLoader.get(ImageLoader.java:184)
at news.CardAdapter.onBindViewHolder(CardAdapter.java:91)
at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:6781)
at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:6823)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:5752)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6019)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5858)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5854)
at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2230)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1557)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1517)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:612)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:3924)
at androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3641)
at androidx.recyclerview.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1858)
at androidx.recyclerview.widget.RecyclerView$1.run(RecyclerView.java:407)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:920)
at android.view.Choreographer.doCallbacks(Choreographer.java:695)
at android.view.Choreographer.doFrame(Choreographer.java:628)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:906)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:7224)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
10-28 10:43:01.427 7392-7392/com.jumagames.birdseggs I/Process: Sending signal. PID: 7392 SIG: 9
Вот так вызывается метод(ошибка на 7-й строке):
public void onBindViewHolder(androidx.recyclerview.widget.RecyclerView.ViewHolder viewHolder, int i) {
if (viewHolder instanceof ViewHolder) {
News news2 = this.Newz.get(i);
ViewHolder viewHolder2 = (ViewHolder) viewHolder;
if (viewHolder2.news_image.getDrawable() == null && news2.getImage() != null) {
this.imageLoader = ImageVolleyRequest.getInstance(this.context).getImageLoader();
this.imageLoader.get(news2.getImage(), ImageLoader.getImageListener(viewHolder2.news_image, R.mipmap.ic_launcher, R.drawable.ic_help));
}
viewHolder2.news_image.setImageUrl(news2.getImage(), this.imageLoader);
viewHolder2.txtTitle.setText(news2.getTitle());
viewHolder2.txtDate.setText(news2.getDate());
viewHolder2.txtShortText.setText(Html.fromHtml(news2.getShort_text()));
viewHolder2.txtId.setText(news2.getId());
return;
}
((ProgressViewHolder) viewHolder).progressBar.setIndeterminate(true);
}
А вот мой ImageVolleyRequest класс:
package news;
import android.content.Context;
import android.graphics.Bitmap;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.BasicNetwork;
import com.android.volley.toolbox.DiskBasedCache;
import com.android.volley.toolbox.HurlStack;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.ImageLoader.ImageCache;
import androidx.collection.LruCache;
public class ImageVolleyRequest {
private static Context context;
private static ImageVolleyRequest customVolleyRequest;
private ImageLoader imageLoader = new ImageLoader(this.requestQueue, new ImageCache() {
private final LruCache<String, Bitmap> cache = new LruCache<>(20);
public Bitmap getBitmap(String str) {
return this.cache.get(str);
}
public void putBitmap(String str, Bitmap bitmap) {
this.cache.put(str, bitmap);
}
});
private RequestQueue requestQueue = getRequestQueue();
private ImageVolleyRequest(Context context2) {
context = context2;
}
public static synchronized ImageVolleyRequest getInstance(Context context2) {
ImageVolleyRequest imageVolleyRequest;
context = context2;
synchronized (ImageVolleyRequest.class) {
if (customVolleyRequest == null) {
customVolleyRequest = new ImageVolleyRequest(context2);
}
imageVolleyRequest = customVolleyRequest;
}
return imageVolleyRequest;
}
public RequestQueue getRequestQueue() {
if (this.requestQueue == null) {
this.requestQueue = new RequestQueue(new DiskBasedCache(context.getCacheDir(), 10485760), new BasicNetwork(new HurlStack()));
this.requestQueue.start();
}
return this.requestQueue;
}
public ImageLoader getImageLoader() {
return this.imageLoader;
}
}
Поля инициализируются в порядке объявления.
И получается что вы передаёте в конструктор ImageLoader
ссылку this.requestQueue
до того как ей присвоено значение.
Нужно поменять местами инициализацию imageLoader
и requestQueue
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Столкнулся с проблемой, не могу заимплементить интерфейс классу, помеченному аннотацией @Service, причем в другом проекте у меня с этим проблем...
Создаю запрос в elasticsearch через NativeSearchQueryBuilder(), но ответ приходит мне в форме страниц, те
Гуру MySQL, подскажите, как синтаксически переписать примерно такой запрос, где используется SUM (
подскажите пожалуйста как разобраться со следующей ситуацией: