2011-10-23 4 views
1

Je suis nouveau dans le monde android et juste commencé avec quelques exemples pour gagner la compréhension. Dans cet exemple, j'essaie d'afficher l'image à partir de l'URL, mais lorsque je lance l'émulateur et que je clique sur l'icône de l'application, la force se ferme.Application Android force fermer

the java file is:- 



    import java.io.InputStream; 
    import java.net.URL; 
    import android.app.Activity; 
    import android.graphics.drawable.Drawable; 
    import android.os.Bundle; 
    import android.widget.ImageView; 

    public class Lab1Activity extends Activity{ 
     /** Called when the activity is first created. */ 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     ImageView imgView =(ImageView)findViewById(R.id.ImageView01); 
     Drawable drawable = LoadImageFromWebOperations("http://www.androidpeople.com/wp-content/uploads/2010/03/android.png"); 
     imgView.setImageDrawable(drawable); 

     } 

     private Drawable LoadImageFromWebOperations(String url) 
     { 
     try 
     { 
     InputStream is = (InputStream) new URL(url).getContent(); 
     Drawable d = Drawable.createFromStream(is, "src name"); 

     return d; 
     }catch (Exception e) { 
     System.out.println("Exc="+e); 
     return null; 
     } 
     } 
     } 

manifeste android: -

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="cmpe235.lab1" 
     android:versionCode="1" 
     android:versionName="1.0"> 
    <uses-sdk android:minSdkVersion="8" /> 


    <uses-permission android:name="android.permission.INTERNET"></uses-permission> 

    <application android:icon="@drawable/icon" android:label="@string/app_name"> 
     <activity android:name=".Lab1Activity" 
        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> 

main.xml: -

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout android:id="@+id/LinearLayout01" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<ImageView android:id="@+id/ImageView01" 
android:layout_height="wrap_content" android:layout_width="wrap_content"/> 
</LinearLayout> 

à DDMS console i obtenir cette erreur: -

[2011-10-23 12:13:51 - ddms]null 
java.lang.NullPointerException 
    at com.android.ddmlib.JdwpPacket.writeAndConsume(JdwpPacket.java:213) 
    at com.android.ddmlib.Client.sendAndConsume(Client.java:574) 
    at com.android.ddmlib.HandleHello.sendHELO(HandleHello.java:142) 
    at com.android.ddmlib.HandleHello.sendHelloCommands(HandleHello.java:65) 
    at com.android.ddmlib.Client.getJdwpPacket(Client.java:671) 
    at com.android.ddmlib.MonitorThread.processClientActivity(MonitorThread.java:317) 
    at com.android.ddmlib.MonitorThread.run(MonitorThread.java:263) 

Alors, comment gérer cet accès nullpointer? Merci

+0

Cette stacktrace n'a rien à voir avec votre code, elle ne contient même pas votre classe 'Lab1Activity'. Y a-t-il une erreur dans logcat qui implique réellement 'Lab1Activity'? –

Répondre

1

Je ne télécharger l'image lorsque l'application démarre, proberly qui provoque l'exception:

Drawable drawable = LoadImageFromWebOperations("http://www.androidpeople.com/wp-content/uploads/2010/03/android.png"); 
    imgView.setImageDrawable(drawable); 

Enregistrer l'image à vos 3 res/dossiers étirables et le charger comme ça, si vous le voulez comme background:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout android:id="@+id/LinearLayout01"  
android:layout_width="fill_parent"  
android:layout_height="fill_parent" 
android:background="@drawable/youresavedfile" 
</LinearLayout> 
0

Les deux emplacements possibles pour NullPointerException que je peux voir sont dans la ligne où vous définissez le drawable dans l'image. Ils peuvent être soit parce que votre vue de l'image est nulle, ou parce que le drawable est nul. Je vous suggère de vérifier si la vue de l'image est nulle avant de l'utiliser, et de vérifier si une exception a été levée dans votre méthode de téléchargement.