2014-02-19 2 views
4

Я пытаюсь добавить нижний колонтитул в ListView, но сбой приложения после этой строки кода: getListView().addView(footerView);. Я новичок в андроиде, и это мой первый опыт работы с ListView.Ошибка после добавления нижнего колонтитула в ListView

Если возможно, мне нужно короткое объяснение метода надувания.

Спасибо!

ToDoListAdapter mAdapter; 

     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 

      // Create a new TodoListAdapter for this ListActivity's ListView 
      mAdapter = new ToDoListAdapter(getApplicationContext()); 

      // Put divider between ToDoItems and FooterView 
      getListView().setFooterDividersEnabled(true); 

      //TODO - Inflate footerView for footer_view.xml file 
      TextView footerView = (TextView) getLayoutInflater().inflate(R.layout.footer_view, null); 

      //TODO - Add footerView to ListView 
      getListView().addView(footerView); 

      footerView.setOnClickListener(new OnClickListener() { 
       @Override 
       public void onClick(View v) { 

        log("Entered footerView.OnClickListener.onClick()"); 

        //TODO - Attach Listener to FooterView. Implement onClick(). 
        Intent startNewActivity = new Intent(null, AddToDoActivity.class); 
        startActivityForResult(startNewActivity, ADD_TODO_ITEM_REQUEST); 

       } 
      }); 

      //TODO - Attach the adapter to this ListActivity's ListView 
      setListAdapter(mAdapter); 

     } 

Вход:

02-19 13:53:39.358: D/dalvikvm(1451): GC_FOR_ALLOC freed 68K, 6% free 3090K/3276K, paused 19ms, total 31ms 
02-19 13:53:39.366: I/dalvikvm-heap(1451): Grow heap (frag case) to 4.196MB for 1127532-byte allocation 
02-19 13:53:39.374: D/dalvikvm(1451): GC_FOR_ALLOC freed 2K, 5% free 4189K/4380K, paused 8ms, total 8ms 
02-19 13:53:39.402: D/AndroidRuntime(1451): Shutting down VM 
02-19 13:53:39.402: W/dalvikvm(1451): threadid=1: thread exiting with uncaught exception (group=0xa4d4db20) 
02-19 13:53:39.414: E/AndroidRuntime(1451): FATAL EXCEPTION: main 
02-19 13:53:39.414: E/AndroidRuntime(1451): Process: course.labs.todomanager, PID: 1451 
02-19 13:53:39.414: E/AndroidRuntime(1451): java.lang.RuntimeException: Unable to start activity ComponentInfo{course.labs.todomanager/course.labs.todomanager.ToDoManagerActivity}: java.lang.UnsupportedOperationException: addView(View) is not supported in AdapterView 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245) 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at android.app.ActivityThread.access$800(ActivityThread.java:135) 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196) 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at android.os.Handler.dispatchMessage(Handler.java:102) 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at android.os.Looper.loop(Looper.java:136) 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at java.lang.reflect.Method.invoke(Method.java:515) 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at dalvik.system.NativeStart.main(Native Method) 
02-19 13:53:39.414: E/AndroidRuntime(1451): Caused by: java.lang.UnsupportedOperationException: addView(View) is not supported in AdapterView 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at android.widget.AdapterView.addView(AdapterView.java:452) 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at course.labs.todomanager.ToDoManagerActivity.onCreate(ToDoManagerActivity.java:56) 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at android.app.Activity.performCreate(Activity.java:5231) 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087) 
02-19 13:53:39.414: E/AndroidRuntime(1451):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159) 
02-19 13:53:39.414: E/AndroidRuntime(1451):  ... 11 more 

Edit:

Спасибо, фиксированная, что проблема, но теперь я, кажется, есть проблема где-то в клик слушателя.

Log:

02-19 14:19:02.346: I/Lab-UserInterface(1731): Entered footerView.OnClickListener.onClick() 
02-19 14:19:02.346: D/AndroidRuntime(1731): Shutting down VM 
02-19 14:19:02.346: W/dalvikvm(1731): threadid=1: thread exiting with uncaught exception (group=0xa4d4db20) 
02-19 14:19:02.350: E/AndroidRuntime(1731): FATAL EXCEPTION: main 
02-19 14:19:02.350: E/AndroidRuntime(1731): Process: course.labs.todomanager, PID: 1731 
02-19 14:19:02.350: E/AndroidRuntime(1731): java.lang.NullPointerException 
02-19 14:19:02.350: E/AndroidRuntime(1731):  at android.content.ComponentName.<init>(ComponentName.java:77) 
02-19 14:19:02.350: E/AndroidRuntime(1731):  at android.content.Intent.<init>(Intent.java:3813) 
02-19 14:19:02.350: E/AndroidRuntime(1731):  at course.labs.todomanager.ToDoManagerActivity$1.onClick(ToDoManagerActivity.java:65) 
02-19 14:19:02.350: E/AndroidRuntime(1731):  at android.view.View.performClick(View.java:4438) 
02-19 14:19:02.350: E/AndroidRuntime(1731):  at android.view.View$PerformClick.run(View.java:18422) 
02-19 14:19:02.350: E/AndroidRuntime(1731):  at android.os.Handler.handleCallback(Handler.java:733) 
02-19 14:19:02.350: E/AndroidRuntime(1731):  at android.os.Handler.dispatchMessage(Handler.java:95) 
02-19 14:19:02.350: E/AndroidRuntime(1731):  at android.os.Looper.loop(Looper.java:136) 
02-19 14:19:02.350: E/AndroidRuntime(1731):  at android.app.ActivityThread.main(ActivityThread.java:5017) 
02-19 14:19:02.350: E/AndroidRuntime(1731):  at java.lang.reflect.Method.invokeNative(Native Method) 
02-19 14:19:02.350: E/AndroidRuntime(1731):  at java.lang.reflect.Method.invoke(Method.java:515) 
02-19 14:19:02.350: E/AndroidRuntime(1731):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
02-19 14:19:02.350: E/AndroidRuntime(1731):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
02-19 14:19:02.350: E/AndroidRuntime(1731):  at dalvik.system.NativeStart.main(Native Method) 
+2

'Intent startNewActivity = new Intent (null, AddToDoActivity.class);' почему у вас есть 'null'? Используйте 'MainActivity.this' – Raghunandan

+0

Эх, спасибо. Я пропустил это. –

+0

также post 'footer_view.xml' – Raghunandan

ответ

12
  1. Изменить

    getListView().addView(footerView); 
    

    Для

    getListView().addFooterView(footerView); 
    
  2. Объяснение для функции надуть:

    LayoutInflater().inflate() просто преобразует макет xml в фактическую структуру представления.

  3. Ваш второй вопрос:

    Посмотрите на ваш клик слушателя:

    Intent startNewActivity = new Intent(null, AddToDoActivity.class); 
    

    Вы не можете начать Intent с нулем в качестве контекста (первый аргумент)

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

    Intent startNewActivity = new Intent(ToDoManagerActivity.this, AddToDoActivity.class); 
    
+0

Спасибо, работает! Но все еще есть ошибка, можете ли вы снова взглянуть? –

+1

Пожалуйста, посмотрите мой отредактированный ответ. –

+1

Если мой ответ помог, пожалуйста, примите его, нажав галочку влево. –

0

Краткое описание метода раздувания: Создает XML-файл макета в соответствующие объекты View. см. LayoutInflator

Смежные вопросы