2010-07-30 5 views
0

J'utilise Eclipse et crée HelloWorld, cela fonctionne très bien avec l'émulateur. Ensuite, j'ai essayé de créer l'application ToDoList où vous pouvez entrer du texte et cliquer pour soumettre, en suivant l'exemple sur le livre que j'ai et obtenir une erreur qui force mon application à fermer lorsque j'interagis avec l'application.android - Utilisation de disposition personnalisée InflateException provoquant la fermeture de l'application

ma structure de répertoire: (s'il vous plaît ignorer les autres dossiers)

ProjectToDoList 
    | 
    |-----src 
    |  |----com.test.dotolist 
    |       |------ToDoList.java 
    |       |------ToDoListItemView.java 
    ------res 
      | 
      |----layout 
       |-------main.xml 
       |-------todolist_item.xml 

Je traqué où il se produit:

Si je viens d'utiliser la mise en page par défaut dans ToDoList.java comme:

final ArrayList<String> todoItems = new ArrayList<String>(); 
final ArrayAdapter<String> aa; 
aa = new ArrayAdapter<String>(this, 
      android.R.layout.simple_expandable_list_item_1, todoItems); 

L'application fonctionne bien. Je peux taper du texte et cliquer sur un bouton pour que le texte apparaisse.

Mais je suis en train d'utiliser ma mise en page personnalisée:

ToDoList.java,

 final ArrayList<String> todoItems = new ArrayList<String>(); 
     int resID = R.layout.todolist_item; 

     //create array adopter to bind the array to the listview 
     final ArrayAdapter<String> aa; 
     aa = new ArrayAdapter<String>(this, resID, todoItems); 

     //bind the array adapter to the listview 
     myListView.setAdapter(aa); 

Comme vous pouvez le voir lorsque je tente de passer resNum à ArrayAdapter, il compile et mon application apparaît sur l'émulateur. Mais quand je clique sur le bouton soumettre, il force à fermer.

todoList_item.xml

<?xml version="1.0" encoding="utf-8"?> 
<com.test.todolist.ToDoListItemView 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:padding="10dp" 
    android:scrollbars="vertical" 
    android:textColor="@color/notepad_text" 
    android:fadingEdge="vertical"  
/> 

La sortie logcat: (Je ne peux pas comprendre ce qui ne va pas)

W/KeyCharacterMap( 279): Using default keymap: /system/usr/keychars/qwerty.kcm.bin 
D/AndroidRuntime( 279): Shutting down VM 
W/dalvikvm( 279): threadid=1: thread exiting with uncaught exception (group=0x4001d800) 
E/AndroidRuntime( 279): FATAL EXCEPTION: main 
E/AndroidRuntime( 279): android.view.InflateException: Binary XML file line #2: Error inflating class com.test.todolist.ToDoListItemView 
E/AndroidRuntime( 279): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576) 
E/AndroidRuntime( 279): at android.view.LayoutInflater.inflate(LayoutInflater.java:385) 
E/AndroidRuntime( 279): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
E/AndroidRuntime( 279): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:332) 
E/AndroidRuntime( 279): at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323) 
E/AndroidRuntime( 279): at android.widget.AbsListView.obtainView(AbsListView.java:1315) 
E/AndroidRuntime( 279): at android.widget.ListView.measureHeightOfChildren(ListView.java:1198) 
E/AndroidRuntime( 279): at android.widget.ListView.onMeasure(ListView.java:1109) 
E/AndroidRuntime( 279): at android.view.View.measure(View.java:8171) 
E/AndroidRuntime( 279): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 
E/AndroidRuntime( 279): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012) 
E/AndroidRuntime( 279): at android.widget.LinearLayout.measureVertical(LinearLayout.java:381) 
E/AndroidRuntime( 279): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304) 
E/AndroidRuntime( 279): at android.view.View.measure(View.java:8171) 
E/AndroidRuntime( 279): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 
E/AndroidRuntime( 279): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 
E/AndroidRuntime( 279): at android.view.View.measure(View.java:8171) 
E/AndroidRuntime( 279): at android.widget.LinearLayout.measureVertical(LinearLayout.java:526) 
E/AndroidRuntime( 279): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304) 
E/AndroidRuntime( 279): at android.view.View.measure(View.java:8171) 
E/AndroidRuntime( 279): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132) 
E/AndroidRuntime( 279): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245) 
E/AndroidRuntime( 279): at android.view.View.measure(View.java:8171) 
E/AndroidRuntime( 279): at android.view.ViewRoot.performTraversals(ViewRoot.java:801) 
E/AndroidRuntime( 279): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727) 
E/AndroidRuntime( 279): at android.os.Handler.dispatchMessage(Handler.java:99) 
E/AndroidRuntime( 279): at android.os.Looper.loop(Looper.java:123) 
E/AndroidRuntime( 279): at android.app.ActivityThread.main(ActivityThread.java:4627) 
E/AndroidRuntime( 279): at java.lang.reflect.Method.invokeNative(Native Method) 
E/AndroidRuntime( 279): at java.lang.reflect.Method.invoke(Method.java:521) 
E/AndroidRuntime( 279): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
E/AndroidRuntime( 279): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
E/AndroidRuntime( 279): at dalvik.system.NativeStart.main(Native Method) 
E/AndroidRuntime( 279): Caused by: java.lang.ClassNotFoundException: com.test.todolist.ToDoListItemView in loader dalvik.system.PathClassLoader[/data/app/com.test.dotolist-1.apk] 
E/AndroidRuntime( 279): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 
E/AndroidRuntime( 279): at java.lang.ClassLoader.loadClass(ClassLoader.java:573) 
E/AndroidRuntime( 279): at java.lang.ClassLoader.loadClass(ClassLoader.java:532) 
E/AndroidRuntime( 279): at android.view.LayoutInflater.createView(LayoutInflater.java:466) 
E/AndroidRuntime( 279): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565) 
E/AndroidRuntime( 279): ... 32 more 
W/ActivityManager( 66): Force finishing activity com.test.dotolist/.ToDoList 

S'il vous plaît laissez-moi savoir si vous avez besoin d'éclaircissements.

+0

la classe ToDoListItemView est étendue en tant que ??? – Jorgesys

+0

Il étend TextView. –

Répondre

3

Ceci est votre Exception ::

Caused by: java.lang.ClassNotFoundException: com.test.todolist.ToDoListItemView in loader dalvik.system.PathClassLoader[/data/app/com.test.dotolist-1.apk] 

et voir votre paquet ::

ProjectToDoList 
    | 
    |-----src 
    |  |----com.test.dotolist 
    |       |------ToDoListItemView.java 

todolist! = Dotolist

vous avez dans votre todoList_item.xml

<com.test.todolist.ToDoListItemView 

Modification ::

<com.test.dotolist.ToDoListItemView 

cela doit fonctionner! =)

+0

hmm ... pourriez-vous expliquer plus? Il semble que la classe ToDoListItemView ne soit pas trouvée? –

+0

Merci pour le détail, laissez-moi essayer .. –

+0

vous êtes les bienvenus =) – Jorgesys

Questions connexes