2010-12-14 50 views
0

J'ai cette application que j'ai développé et il fonctionne très bien sur le simulateur sans erreurs quoi que ce soit. mais le moment j'essaye de courir la même chose sur le téléphone pour le test, l'application se bloque en déclarant filenotfoundexception. il est dit que le fichier /res/drawable/divider_horizontal.9.png est manquant. mais en fait, je n'ai jamais référencé ce fichier dans mon code. Je crois que c'est un fichier système/os qui n'est pas disponible. J'ai une vue de liste personnalisée, je suppose que c'est le diviseur là-bas ... pourrait quelqu'un pourrait suggérer ce qui ne va pas ici. Je crois que c'est une question similaire discutais here..but je suis incapable de donner un sens hors de luiapplication android travaillant sur simulateur mais pas sur le téléphone

http://code.google.com/p/transdroid/issues/detail?id=14

le fichier de mise en page de listview.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="wrap_content" android:gravity="left|center" 
    android:layout_width="wrap_content" android:paddingBottom="5px" 
    android:paddingTop="5px" android:paddingLeft="5px" > 
    <ImageView android:id="@+id/linkImage" android:layout_width="wrap_content" 
     android:layout_height="fill_parent" android:layout_marginRight="6dip" 
     android:src="@drawable/icon" /> 
    <LinearLayout android:orientation="vertical" 
     android:layout_width="0dip" android:layout_weight="1" 
     android:layout_height="fill_parent"> 
     <TextView android:id="@+id/firstLineView" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:gravity="center" android:textColor="#FFFF00" android:text="first line title"></TextView> 

     <TextView android:id="@+id/secondLineView" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:text="second line title" android:layout_marginLeft="10px" android:gravity="center" 
      android:textColor="#0099CC"></TextView> 

    </LinearLayout> 
</LinearLayout> 

le principal fichier xml qui appelle le listview.xml

<?xml version="1.0" encoding="UTF-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" android:layout_height="fill_parent"> 

    <LinearLayout android:orientation="vertical" 
     android:layout_width="fill_parent" android:layout_height="fill_parent"> 
     <LinearLayout android:orientation="horizontal" 
      android:layout_width="fill_parent" android:layout_height="40px"> 
      <Button android:id="@+id/todayButton" android:layout_width="fill_parent" 
       android:layout_height="fill_parent" android:text="Today" 
       android:textSize="12sp" android:gravity="center" 
       android:layout_weight="1" /> 
      <Button android:id="@+id/tomorrowButton" android:layout_width="fill_parent" 
       android:layout_height="fill_parent" android:text="Tomorrow" 
       android:textSize="12sp" android:layout_weight="1" /> 

      <Button android:id="@+id/WeekButton" android:layout_width="fill_parent" 
       android:layout_height="fill_parent" android:text="Future" 
       android:textSize="12sp" android:layout_weight="1" /> 


     </LinearLayout> 
     <LinearLayout android:id="@+id/listLayout" 
      android:orientation="vertical" android:layout_width="fill_parent" 
      android:layout_height="fill_parent"> 
      <ListView android:id="@+id/ListView01" android:layout_width="fill_parent" 
       android:layout_height="fill_parent" /> 
      <TextView android:id="@id/android:empty" 
       android:layout_width="fill_parent" android:layout_height="fill_parent" 
       android:text="No Results" /> 
     </LinearLayout> 
    </LinearLayout> 
</FrameLayout> 

et le code pour le même est

private class EfficientAdapter extends BaseAdapter{ 
     private LayoutInflater mInflater; 

     private String eventTitleArray[]; 


private String eventDateArray[]; 
    private String eventImageLinkArray[]; 


    public EfficientAdapter(Context context,String[] eventTitleArray,String[] eventDateArray, String[] eventImageLinkArray){ 
     mInflater = LayoutInflater.from(context); 

     this.eventDateArray=eventDateArray; 
     this.eventTitleArray=eventTitleArray; 
     this.eventImageLinkArray =eventImageLinkArray; 

    } 
    public int getCount(){ 
     //return XmlParser.todayEvents.size()-1; 
     return this.eventDateArray.length; 
    } 
    public Object getItem(int position){ 
     return position; 
    } 
    public long getItemId(int position){ 
     return position; 
    } 
    public View getView(int position, View convertView, ViewGroup parent){ 
     ViewHolder holder; 
     if(convertView == null){ 
      convertView = mInflater.inflate(R.layout.listview,null); 
     holder = new ViewHolder(); 
     holder.firstLine = (TextView) convertView.findViewById(R.id.firstLineView); 
     holder.secondLine = (TextView) convertView.findViewById(R.id.secondLineView); 
     holder.imageView = (ImageView) convertView.findViewById(R.id.linkImage); 
     //holder.checkbox = (CheckBox) convertView.findViewById(R.id.star); 
     holder.firstLine.setFocusable(false); 
     holder.secondLine.setFocusable(false); 
     holder.imageView.setFocusable(false); 
     //holder.checkbox.setFocusable(false); 
     convertView.setTag(holder); 
    }else{ 
     holder = (ViewHolder) convertView.getTag(); 
    } 
    Log.i(tag, "Creating the list"); 
    holder.firstLine.setText(this.eventTitleArray[position]); 
    holder.secondLine.setText(this.eventDateArray[position]); 

    Bitmap bitmap; 
    try { 
     bitmap = BitmapFactory.decodeStream((InputStream)new URL("http://edu/images/heinz7.jpg").getContent()); 
    } catch (MalformedURLException e1) { 
     // TODO Auto-generated catch block 
     e1.printStackTrace(); 
    } catch (Exception e1) { 
     // TODO Auto-generated catch block 
     bitmap = BitmapFactory.decodeFile("assets/heinz7.jpg");//decodeFile(getResources().getAssets().open("icon.png")); 
     e1.printStackTrace(); 
    } 
    try { 
     try{ 
      bitmap = BitmapFactory.decodeStream((InputStream)new URL(this.eventImageLinkArray[position]).getContent());} 
     catch(Exception e){ 
      bitmap = BitmapFactory.decodeStream((InputStream)new URL("http://eventur.sis.pitt.edu/images/heinz7.jpg").getContent()); 
     } 

     int width = 0; 
     int height =0; 
     int newWidth = 50; 
     int newHeight = 40; 

     try{ 
      width = bitmap.getWidth(); 
      height = bitmap.getHeight(); 
     } 
     catch(Exception e){ 
      width = 50; 
      height = 40; 
     } 
     float scaleWidth = ((float)newWidth)/width; 
     float scaleHeight = ((float)newHeight)/height; 
     Matrix mat = new Matrix(); 
     mat.postScale(scaleWidth, scaleHeight); 

     try{ 
      Bitmap newBitmap = Bitmap.createBitmap(bitmap,0,0,width,height,mat,true); 
      BitmapDrawable bmd = new BitmapDrawable(newBitmap); 
      holder.imageView.setImageDrawable(bmd); 
      holder.imageView.setScaleType(ScaleType.CENTER); 
     } 
     catch(Exception e){ 

     } 

    } catch (MalformedURLException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 



    return convertView; 
} 
class ViewHolder{ 
    TextView firstLine; 
    TextView secondLine; 
    ImageView imageView; 
    //CheckBox checkbox; 

} 

La trace de la pile

12-12 22:55:25.022: ERROR/AndroidRuntime(11069): Uncaught handler: thread main exiting due to uncaught exception 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069): android.view.InflateException: Binary XML file line #6: Error inflating class java.lang.reflect.Constructor 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.view.LayoutInflater.createView(LayoutInflater.java:512) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView(PhoneLayoutInflater.java:56) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:562) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:617) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.view.LayoutInflater.inflate(LayoutInflater.java:407) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at com.eventur.MainActivity$EfficientAdapter.getView(MainActivity.java:566) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.AbsListView.obtainView(AbsListView.java:1274) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.ListView.makeAndAddView(ListView.java:1661) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.ListView.fillDown(ListView.java:610) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.ListView.fillFromTop(ListView.java:673) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.ListView.layoutChildren(ListView.java:1519) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.AbsListView.onLayout(AbsListView.java:1113) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.view.View.layout(View.java:6156) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.LinearLayout.onLayout(LinearLayout.java:918) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.view.View.layout(View.java:6156) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.LinearLayout.onLayout(LinearLayout.java:918) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.view.View.layout(View.java:6156) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.view.View.layout(View.java:6156) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.view.View.layout(View.java:6156) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1119) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:998) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.LinearLayout.onLayout(LinearLayout.java:918) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.view.View.layout(View.java:6156) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.FrameLayout.onLayout(FrameLayout.java:333) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.view.View.layout(View.java:6156) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.view.ViewRoot.performTraversals(ViewRoot.java:950) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1529) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.os.Handler.dispatchMessage(Handler.java:99) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.os.Looper.loop(Looper.java:123) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.app.ActivityThread.main(ActivityThread.java:3977) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at java.lang.reflect.Method.invokeNative(Native Method) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at java.lang.reflect.Method.invoke(Method.java:521) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at dalvik.system.NativeStart.main(Native Method) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069): Caused by: java.lang.reflect.InvocationTargetException 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.ImageView.<init>(ImageView.java:128) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at java.lang.reflect.Constructor.constructNative(Native Method) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at java.lang.reflect.Constructor.newInstance(Constructor.java:446) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.view.LayoutInflater.createView(LayoutInflater.java:499) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  ... 42 more 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069): Caused by: android.content.res.Resources$NotFoundException: File res/drawable/divider_horizontal_dark.9.png from drawable resource ID #0x7f020001 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.content.res.Resources.loadDrawable(Resources.java:1643) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.content.res.TypedArray.getDrawable(TypedArray.java:548) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.widget.ImageView.<init>(ImageView.java:138) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  ... 46 more 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069): Caused by: java.io.FileNotFoundException: res/drawable/divider_horizontal_dark.9.png 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.content.res.AssetManager.openNonAssetNative(Native Method) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.content.res.AssetManager.openNonAsset(AssetManager.java:417) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  at android.content.res.Resources.loadDrawable(Resources.java:1636) 
12-12 22:55:25.212: ERROR/AndroidRuntime(11069):  ... 48 more 
+0

Êtes-vous sérieusement téléchargeaient des images bitmap dans la méthode getView() d'un listview? Ce n'est sûrement pas correct. Même si c'était dans une asynctask, ce n'est toujours pas la meilleure idée. – Falmarri

+0

Quel thème de l'interface utilisateur utilisez-vous (Android standard, sens HTC ... personnalisé?) Et sur quel téléphone le testiez-vous? Peut-être que cette ressource n'existe pas dans le thème actuel de l'interface utilisateur. –

+0

Quelle version android utilisez-vous dans l'émulateur et sur le téléphone? Quel est le réglage de vos paramètres sdk? –

Répondre

1

Il y a un problème survenant au cours de l'inflation. Le gonflement n'a pas le meilleur rapport d'erreurs/récupération, donc il lance des messages cryptiques bizarres comme ça quand il rencontre des problèmes. Je suis confiant que le problème réside dans listview.xml, et le problème est plus que probablement l'un des attributs xml que vous avez ajouté à l'un des éléments. La ligne # 6 est je pense en référence soit au premier ou au second élément Button. Quand il va compiler, il semble donner à chaque élément une seule ligne chacun. Je commencerais par enlever toutes les balises qui ne sont pas immédiatement nécessaires pour que le programme fonctionne, comme gravity et layout_weight. Désolé, je ne peux pas fournir une réponse plus spécifique; Lorsque vous rencontrez des erreurs d'inflation comme celle-ci, il est important de vérifier dans le noir jusqu'à ce que vous trouviez ce qui ne va pas. Pour expliquer pourquoi cela se produit sur le téléphone et non sur l'émulateur, il y a probablement une différence de système d'exploitation entre les deux (version du système d'exploitation, interface utilisateur utilisée, autres modifications apportées par le fabricant, etc.). Les tests sur l'émulateur vous donneront une bonne idée de l'apparence et de l'exécution du programme sur le téléphone, mais n'offrent aucune garantie.

Félicitations pour fournir autant d'informations, cela rend le dépannage beaucoup plus facile ;-) Faites-moi savoir si mon conseil fonctionne, ou si vous avez besoin de plus d'informations.

+0

@ atraudes..thank vous pour une telle réponse détaillée. Je vais sûrement tester cela en supprimant les balises moins importantes .. j'espère qu'il fait le travail .. –

+0

Vous l'avez eu ;-) Bonne chance! – atraudes

+0

@ astraudes..J'ai essayé de supprimer les balises moins importantes, l'application ne se charge toujours pas dans le téléphone .. et dans l'émulateur, il perd le design qu'il devrait avoir réellement ... pensez-vous, le déploiement de cette application dans un autre android téléphone basé fonctionnerait? –

0

J'ai essayé d'utiliser mes propres fichiers de ressources avec une extension similaire "/res/drawable/divider_horizontal.9.png" E.G. ".9.png" Il est expliqué que ce type de fichier est utilisé pour Android pour savoir que l'image a des limites spéciales qui peuvent s'ajuster. J'ai essayé de créer mes propres boutons en utilisant ce type d'extension de fichier et j'avais aussi des erreurs. J'ai remplacé mes fichiers sans l'extension ".9" et je n'ai plus eu de problèmes. Lorsque vous référencez le fichier, vous ne devriez jamais avoir l'extension.