Я использую Eclipse и создал HelloWorld, и он отлично работает с помощью эмулятора.Затем я попытался создать приложение ToDoList, в котором вы можете ввести текст и нажать кнопку «Отправить», следуя примеру в моей книге, и получаю сообщение об ошибке, которое приводит к принудительному закрытию приложения при взаимодействии с приложением.
myструктура каталогов: (пожалуйста, игнорируйте другие папки)
ProjectToDoList
|
|-----src
| |----com.test.dotolist
| |------ToDoList.java
| |------ToDoListItemView.java
------res
|
|----layout
|-------main.xml
|-------todolist_item.xml
Я отследил, где это происходит:
Если я просто использую макет по умолчанию в ToDoList.java, например:
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);
Приложение работает отлично.Я могу ввести текст и щелкнуть по кнопке для отображения текста.
Но я пытаюсь использовать свой собственный макет:
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);
Как вы можете видеть, когда я пытаюсь передать resID в ArrayAdapter, он компилируется, и мое приложение отображается в эмуляторе.Но когда я нажимаю кнопку «Отправить», происходит принудительное закрытие.
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"
/>
Вывод logcat: (Я не могу понять, в чем дело)
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
Пожалуйста, дайте мне знать, если вам нужны разъяснения.