Следующая ошибка:
AndroidRuntime: FATAL EXCEPTION: main Процесс: com.example.madnanijaz.labassignment1, PID: 2967 java.lang.NullPointerException: Аргумент не должен быть нулевым в com.bumptech.glide.util.Preconditions.checkNotNull (Preconditions.java:27) в com.bumptech.glide.util.Preconditions.checkNotNull (Preconditions.java:22) в com.bumptech.glide.RequestBuilder.into (RequestBuilder.java:38)) на com.example.madnanijaz.labassignment1.MainActivity $ 7.onResponse (MainActivity.java:181) на com.example.madnanijaz.labassignment1.MainActivity $ 7.onResponse (MainActivity.java:170)
происходит, потому что вы пытаетесь загрузить изображение в closingDialogImageTwo
с помощью этого:
Glide.with(getApplicationContext()).load(jsonObject.getString("imgurl")).into(c losingDialogImageTwo);
, но вы еще не инициализировали представление.Поскольку изображение находится внутри настраиваемого представления для диалогового окна, его необходимо инициализировать после надувания представления.Это после следующего кода:
View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.row_layout,null);
с этим:
ImageView closingDialogImageTwo = view.findViewById(R.id.your_image_id);
Вам нужно загружать изображение только после того, как ваш метод fetchingAddsFromServer()
завершил выборку изображения, потому что его асинхронное поведение.
Подводя итог, вам нужно переместить свое создание AlertDialog в fetchingAddsFromServer
следующим образом:
private void fetchingAddsFromServer() {
StringRequest request= new StringRequest(URL, new
Response.Listener<String>() {
@Override
public void onResponse(String response) {
...
// assuming you got the image.
String imageUrl = jsonObject.getString("imgurl");
showDialogWithImage(imageUrl);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
});
RequestQueue queue= Volley.newRequestQueue(MainActivity.this);
queue.add(request);
}
private void showDialogWithImage(String imageUrl) {
final AlertDialog.Builder builder= new AlertDialog.Builder(MainActivity.this);
View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.row_layout,null);
ImageView closingDialogImageTwo = view.findViewById(R.id.your_image_id);
Glide.with(getApplicationContext())
.load(imageUrl).into(closingDialogImageTwo);
builder.setNegativeButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
finish();
}
});
builder.setPositiveButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
dialogInterface.dismiss();
}
});
builder.setView(view);
builder.show();
}