2016-08-23 2 views
0

Я пытаюсь загрузить изображения с URL-адреса с помощью API Picasso для Android Studio Java. Щелкнула плавающая панель действий и отобразилось диалоговое окно с изображением из URL-адреса в нем.Ошибка Пикассо Target Null для загрузки файла URL. Java

I Пробовал следующее: Picasso Target must not be null error. Но моя ошибка все еще происходит.

Это код, который я сейчас использую:

 FloatingActionButton FabViewImage = (FloatingActionButton) findViewById(R.id.fabPicture); 
    if (FabViewImage != null) 
     FabViewImage.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Dialog settingsDialog = new Dialog(TabEmpOrder.this); 
       settingsDialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
       settingsDialog.setContentView(getLayoutInflater().inflate(R.layout.order_detail_image_view, null)); 
       Context context = settingsDialog.getContext(); 
       settingsDialog.show(); 

       ImageView imgView = (ImageView) findViewById(R.id.imgOrderDetails); 
       Picasso.with(context).load("http://i.imgur.com/Tnendik.png").into(imgView); 
      } 
     }); 

Вот сообщение об ошибке отображается

08-23 09:54:06.351 25488-25488/dura_art.bigbyte E/AndroidRuntime: FATAL EXCEPTION: main 
Process: dura_art.bigbyte, PID: 25488 
java.lang.IllegalArgumentException: Target must not be null. 
at com.squareup.picasso.RequestCreator.into(RequestCreator.java:618) 
at com.squareup.picasso.RequestCreator.into(RequestCreator.java:601) 
at dura_art.bigbyte.TabEmpOrder$1.onClick(TabEmpOrder.java:99)//This is where it breaks 
at android.view.View.performClick(View.java:5697) 
at android.view.View$PerformClick.run(View.java:22526) 
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) 

Где я ошибся? И как я могу это исправить?

+0

Инициализируйте свой ImageView в onCreate и убедитесь, что R.id.imgOrderDetails действительно относится к одному и тому же представлению. –

+0

, так что ваше изображение отображается в диалоговом окне предупреждения? Является ли просмотр изображения частью схемы диалога? – himanshu1496

ответ

0

ли это

View v = getLayoutInflater().inflate(R.layout.order_detail_image_view, null); 
settingsDialog.setContentView(v); 
      Context context = settingsDialog.getContext(); 
      settingsDialog.show(); 
ImageView imgView = (ImageView) v.findViewById(R.id.imgOrderDetails); 
      Picasso.with(context).load("http://i.imgur.com/Tnendik.png").into(imgView); 
0

Вы должны получить ImageView от макета, используемого для AlertDialog поэтому попробуйте ниже код:

 @Override 
     public void onClick(View view) { 
      Dialog settingsDialog = new Dialog(TabEmpOrder.this); 
      settingsDialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE); 
      View layout = getLayoutInflater().inflate(R.layout.order_detail_image_view; 
      ImageView imgView = (ImageView) layout.findViewById(R.id.imgOrderDetails); 

      settingsDialog.setContentView(layout, null)); 
      Context context = settingsDialog.getContext(); 
      settingsDialog.show(); 


      Picasso.with(context).load("http://i.imgur.com/Tnendik.png").into(imgView); 
     } 

Здесь ваш ImageView был null при передаче picasso, но теперь он выиграл быть.