2014-09-02 3 views
1

Я новичок в разработке Android, я пытаюсь загрузить изображение с URL-адреса с помощью Picasso, но это не удалось, когда я перехожу к загрузке Picasso.Picasso Load Image Failed and App Crashing

Ниже приведен код, который я использую для:

//Declaring Variable 
ImageView ImageView1 = (ImageView)findViewById(R.id.forthImage); 
Context context = this; 

//In onCreate() 
Picasso.with(context).load("http://postimg.org/image/wjidfl5pd/").into(ImageView1); 

В моей XML:

<ImageView 
    android:id="@+id/forthImage" 
    android:layout_width="150dp" 
    android:layout_height="150dp" 
    android:layout_alignParentTop="true" 
    android:layout_toRightOf="@+id/thirdImage" 
    /> 

И мой catLog:

09-02 09:11:39.632: E/AndroidRuntime(8680): FATAL EXCEPTION: main 
09-02 09:11:39.632: E/AndroidRuntime(8680): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.toppan.toppan_android_v1/com.toppan.toppan_android_v1.Animation_Run}: java.lang.NullPointerException 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2151) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2286) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at android.app.ActivityThread.access$600(ActivityThread.java:144) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1259) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at android.os.Handler.dispatchMessage(Handler.java:99) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at android.os.Looper.loop(Looper.java:137) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at android.app.ActivityThread.main(ActivityThread.java:5166) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at java.lang.reflect.Method.invokeNative(Native Method) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at java.lang.reflect.Method.invoke(Method.java:525) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:768) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:584) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at dalvik.system.NativeStart.main(Native Method) 
09-02 09:11:39.632: E/AndroidRuntime(8680): Caused by: java.lang.NullPointerException 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at android.app.Activity.findViewById(Activity.java:1902) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at com.toppan.toppan_android_v1.Animation_Run.<init>(Animation_Run.java:17) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at java.lang.Class.newInstanceImpl(Native Method) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at java.lang.Class.newInstance(Class.java:1130) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at android.app.Instrumentation.newActivity(Instrumentation.java:1064) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2142) 
09-02 09:11:39.632: E/AndroidRuntime(8680):  ... 11 more 

Я не знаю, что причина причина это не удалось. Я загрузил библиотеку picasso из «http://square.github.io/picasso/» и добавил ее в свою библиотечную папку. Также добавлено разрешение INTERNET в файл манифеста.

Любая идея ребята ??

ответ

0

Из того, что я вижу, вы потратили ссылку на экземпляр деятельности Context context = this; вне метода Oncreat(), так что можно получать NullPointerException

Здесь

Picasso.with(context).load("http://postimg.org/image/wjidfl5pd/").into(ImageView1); 

переменная context равна нулю

Изменить это:

//Declaring Variable 
ImageView ImageView1 = (ImageView)findViewById(R.id.forthImage); 
Context context = this; 

By:

//In onCreate() 

ImageView ImageView1 = (ImageView)findViewById(R.id.forthImage); 
Picasso.with(this).load("http://postimg.org/image/wjidfl5pd/").into(ImageView1); 
+0

Это работает! Большое спасибо! – willyip237

+0

Но я использую контекст во всем мире, даже сбой приложения. Я использую picasso в asyn task – Prasad

4
final Target mTarget = new Target() { 
     @Override 
     public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom loadedFrom) { 
      Log.d("DEBUG", "onBitmapLoaded"); 
      progress_bar.setVisibility(View.GONE); 
      cropImageView.setImageBitmap(bitmap); 
     } 

     @Override 
     public void onBitmapFailed(Drawable drawable) { 
      Log.d("DEBUG", "onBitmapFailed"); 
     } 

     @Override 
     public void onPrepareLoad(Drawable drawable) { 
      Log.d("DEBUG", "onPrepareLoad"); 
     } 
    }; 
    Picasso.with(this).load(wallpaper.getMain_image()).into(mTarget); 
    cropImageView.setTag(mTarget); 

Примечание: cropImageView является ImageView