加入页脚的ListView后崩溃 [英] Crash after adding footer to ListView

查看:192
本文介绍了加入页脚的ListView后崩溃的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想这行code的后躯添加到的ListView ,但应用程序崩溃: getListView()addView(footerView ); 。我是新来的Andr​​oid和这是我与的ListView

初体验

如果有可能,我需要充气方法的简短说明。

谢谢!

  ToDoListAdapter mAdapter;        @覆盖
        公共无效的onCreate(捆绑savedInstanceState){
            super.onCreate(savedInstanceState);            //创建此ListActivity的ListView的新TodoListAdapter
            mAdapter =新ToDoListAdapter(getApplicationContext());            // ToDoItems和FooterView之间放置分频器
            getListView()setFooterDividersEnabled(真)。            // TODO - 充气footerView为footer_view.xml文件
            TextView的footerView =(TextView中)getLayoutInflater()膨胀(R.layout.footer_view,NULL);            // TODO - 添加到footerView的ListView
            。getListView()addView(footerView);            footerView.setOnClickListener(新OnClickListener(){
                @覆盖
                公共无效的onClick(视图v){                    日志(输入footerView.OnClickListener.onClick());                    // TODO - 将监听到FooterView。实现的onClick()。
                    意图startNewActivity =新意图(NULL,AddToDoActivity.class);
                    startActivityForResult(startNewActivity,ADD_TODO_ITEM_REQUEST);                }
            });            // TODO - 将适配器连接到这个ListActivity的ListView控件
            setListAdapter(mAdapter);        }

日志:

  02-19 13:53:39.358:D / dalvikvm(1451):GC_FOR_ALLOC释放68K,6%免费3090K / 3276K,暂停19ms,共31毫秒
02-19 13:53:39.366:I / dalvikvm堆(1451):成长堆(frag的情况下),以4.196M​​B为1127532字节分配
02-19 13:53:39.374:D / dalvikvm(1451):GC_FOR_ALLOC释放2K,5%的游离4189K / 4380K,暂停为8ms,8ms的总
02-19 13:53:39.402:D / AndroidRuntime(1451):关闭VM
02-19 13:53:39.402:W / dalvikvm(1451):主题ID = 1:螺纹未捕获的异常退出(组= 0xa4d4db20)
02-19 13:53:39.414:E / AndroidRuntime(1451):致命异常:主要
02-19 13:53:39.414:E / AndroidRuntime(1451):工艺:course.labs.todomanager,PID:1451
02-19 13:53:39.414:E / AndroidRuntime(1451):了java.lang.RuntimeException:无法启动活动ComponentInfo {course.labs.todomanager / course.labs.todomanager.ToDoManagerActivity}:java.lang.UnsupportedOperationException:addView (视图)不支持的适配器视图
02-19 13:53:39.414:E / AndroidRuntime(1451):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
02-19 13:53:39.414:E / AndroidRuntime(1451):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
02-19 13:53:39.414:E / AndroidRuntime(1451):在android.app.ActivityThread.access $ 800(ActivityThread.java:135)
02-19 13:53:39.414:E / AndroidRuntime(1451):在android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1196)
02-19 13:53:39.414:E / AndroidRuntime(1451):在android.os.Handler.dispatchMessage(Handler.java:102)
02-19 13:53:39.414:E / AndroidRuntime(1451):在android.os.Looper.loop(Looper.java:136)
02-19 13:53:39.414:E / AndroidRuntime(1451):在android.app.ActivityThread.main(ActivityThread.java:5017)
02-19 13:53:39.414:E / AndroidRuntime(1451):在java.lang.reflect.Method.invokeNative(本机方法)
02-19 13:53:39.414:E / AndroidRuntime(1451):在java.lang.reflect.Method.invoke(Method.java:515)
02-19 13:53:39.414:E / AndroidRuntime(1451):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:779)
02-19 13:53:39.414:E / AndroidRuntime(1451):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
02-19 13:53:39.414:E / AndroidRuntime(1451):在dalvik.system.NativeStart.main(本机方法)
02-19 13:53:39.414:E / AndroidRuntime(1451):java.lang.UnsupportedOperationException:致addView(视图)不支持的适配器视图
02-19 13:53:39.414:E / AndroidRuntime(1451):在android.widget.AdapterView.addView(AdapterView.java:452)
02-19 13:53:39.414:E / AndroidRuntime(1451):在course.labs.todomanager.ToDoManagerActivity.onCreate(ToDoManagerActivity.java:56)
02-19 13:53:39.414:E / AndroidRuntime(1451):在android.app.Activity.performCreate(Activity.java:5231)
02-19 13:53:39.414:E / AndroidRuntime(1451):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
02-19 13:53:39.414:E / AndroidRuntime(1451):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2159)
02-19 13:53:39.414:E / AndroidRuntime(1451):11 ...更多

编辑:

谢谢,固定的问题,但现在我似乎有问题的地方在点击侦听器。

日志:

  02-19 14:19:02.346:I /实验室的UserInterface(1731):进入footerView.OnClickListener.onClick()
02-19 14:19:02.346:D / AndroidRuntime(1731):关闭VM
02-19 14:19:02.346:W / dalvikvm(1731):主题ID = 1:螺纹未捕获的异常退出(组= 0xa4d4db20)
02-19 14:19:02.350:E / AndroidRuntime(1731):致命异常:主要
02-19 14:19:02.350:E / AndroidRuntime(1731):工艺: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):在android.content.ComponentName<&初始化GT;(ComponentName.java:77)
02-19 14:19:02.350:E / AndroidRuntime(1731):在android.content.Intent<&初始化GT;(Intent.java:3813)
02-19 14:19:02.350:E / AndroidRuntime(1731):在course.labs.todomanager.ToDoManagerActivity $ 1.onClick(ToDoManagerActivity.java:65)
02-19 14:19:02.350:E / AndroidRuntime(1731):在android.view.View.performClick(View.java:4438)
02-19 14:19:02.350:E / AndroidRuntime(1731):在android.view.View $ PerformClick.run(View.java:18422)
02-19 14:19:02.350:E / AndroidRuntime(1731):在android.os.Handler.handleCallback(Handler.java:733)
02-19 14:19:02.350:E / AndroidRuntime(1731):在android.os.Handler.dispatchMessage(Handler.java:95)
02-19 14:19:02.350:E / AndroidRuntime(1731):在android.os.Looper.loop(Looper.java:136)
02-19 14:19:02.350:E / AndroidRuntime(1731):在android.app.ActivityThread.main(ActivityThread.java:5017)
02-19 14:19:02.350:E / AndroidRuntime(1731):在java.lang.reflect.Method.invokeNative(本机方法)
02-19 14:19:02.350:E / AndroidRuntime(1731):在java.lang.reflect.Method.invoke(Method.java:515)
02-19 14:19:02.350:E / AndroidRuntime(1731):在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:779)
02-19 14:19:02.350:E / AndroidRuntime(1731):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
02-19 14:19:02.350:E / AndroidRuntime(1731):在dalvik.system.NativeStart.main(本机方法)


解决方案

  1. 修改

      getListView()addView(footerView)。

      getListView()addFooterView(footerView)。


  2. 解释充气功能:

    LayoutInflater()。膨胀()只是一个布局XML转换成实际的景观结构。


  3. 您第二个问题:

    在点击监听器有一个看看:

     意图startNewActivity =新意图(NULL,AddToDoActivity.class);

    您无法启动,使用null作为上下文的意图(第一个参数)

    改成这样:

     意图startNewActivity =新意图(ToDoManagerActivity.this,AddToDoActivity.class);


I'm trying to add footer to ListView but application crashes after this line of code: getListView().addView(footerView);. I'm new to android and this is my first experience with ListView.

If is possible I need short explanation of inflate method.

Thanks!

  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);

        }

Log:

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:

Thanks, fixed that problem but now I it seems there is issue somewhere in click listener.

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)

解决方案

  1. Change

    getListView().addView(footerView);
    

    To

    getListView().addFooterView(footerView);
    

  2. Explanation for inflate function:

    LayoutInflater().inflate() just converts a layout xml into an actual View structure.

  3. Your second issue:

    Have a look at your click listener:

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

    You cannot start an Intent with null as the context (the first argument)

    Change to this:

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

这篇关于加入页脚的ListView后崩溃的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆