在ViewStub中使用ListView时发生NullPointerException [英] NullPointerException when using ListView inside a ViewStub

查看:68
本文介绍了在ViewStub中使用ListView时发生NullPointerException的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在ViewStub中创建一个ListView,但是我一直在获取NullPointerException.我的按钮在ViewStub中按预期工作.失败的代码如下:

I'm trying to create a ListView inside a ViewStub, but i keep on getting a NullPointerException. My Buttons works as intended inside the ViewStub. The code that fails is as following:

else if(v.getId() == R.id.comments_button_series_view){
    if(stubUsed == false){

        stub = (ViewStub) findViewById(R.id.stub);
        View inflatedStub = stub.inflate();

        String[] comments = new String[]{"comment1", "comment2"}; 
        commentsAdapter = new ArrayAdapter<String>(this, 
                                  R.layout.patient_list_element,
                                  R.id.comments_list_comments_view, comments);
        commentsList = (ListView)findViewById(R.id.comments_list_comments_view); 
        commentsList.setAdapter(commentsAdapter);

我认为它在commentsList.setAdapter(commentsAdapter)处失败.

I think it failes at commentsList.setAdapter(commentsAdapter).

此XML文件包含保存ListView的ViewStub的内容,如下所示:

This XML file with the content of the ViewStub that holds the ListView is as following:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/comment_stub"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/settings_background" >

    <Button
        android:id="@+id/comments_button_comment_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginRight="10dp"
        android:layout_marginTop="62dp"
        android:text="Add comment" />


    <ListView
        android:id="@+id/comments_list_comments_view"
        android:layout_width="match_parent"
        android:layout_height="470dp"
        android:layout_alignLeft="@+id/pin_button_comments_view"
        android:layout_below="@+id/comments_button_comment_view" >

    </ListView>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignRight="@+id/comments_button_comment_view"
        android:layout_marginRight="119dp"
        android:text="COMMENTS"
        android:textAppearance="?android:attr/textAppearanceLarge" />

    <Button
        android:id="@+id/pin_button_comments_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/comments_button_comment_view"
        android:layout_alignBottom="@+id/comments_button_comment_view"
        android:layout_marginRight="30dp"
        android:layout_toLeftOf="@+id/comments_button_comment_view"
        android:text="Add Pin" />

    <Button
        android:id="@+id/hide_button_comments_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/pin_button_comments_view"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="10dp"
        android:text="Hide" />

</RelativeLayout>

我已经在不使用Viewstub的情况下测试了ListView的代码,并且效果很好.

I have tested the code for the ListView without using a viewstub, and that works just fine.

我想我明白了吗?任何帮助表示赞赏! :)

I think i got it all? Any help is appreciated! :)

感谢您的快速回复!

contentView是在ViewStub膨胀的视图上设置的.但是如前所述,它可以与按钮一起很好地工作,但是我不明白为什么我用ListView获得了一个空指针! :(

THe contentView is set on the view where the ViewStub is inflated. But as mentioned, it works just fine with buttons, but i don't get why i get a nullpointer with the ListView! :(

这是LogCat的结果:

Here is the outcome from the LogCat:

04-11 10:37:55.400: W/dalvikvm(971):        threadid=1: thread exiting with uncaught exception (group=0x40014760)
04-11 10:37:55.450: E/AndroidRuntime(971):  FATAL EXCEPTION: main
04-11 10:37:55.450: E/AndroidRuntime(971):  java.lang.NullPointerException
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:396)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.widget.ArrayAdapter.getView(ArrayAdapter.java:366)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.widget.AbsListView.obtainView(AbsListView.java:1964)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.widget.ListView.makeAndAddView(ListView.java:1756)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.widget.ListView.fillDown(ListView.java:656)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.widget.ListView.fillFromTop(ListView.java:716)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.widget.ListView.layoutChildren(ListView.java:1609)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.widget.AbsListView.onLayout(AbsListView.java:1794)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.view.View.layout(View.java:9330)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.view.ViewGroup.layout(ViewGroup.java:3795)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:912)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.view.View.layout(View.java:9330)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.view.ViewGroup.layout(ViewGroup.java:3795)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.widget.RelativeLayout.onLayout(RelativeLayout.java:912)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.view.View.layout(View.java:9330)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.view.ViewGroup.layout(ViewGroup.java:3795)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.widget.FrameLayout.onLayout(FrameLayout.java:400)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.view.View.layout(View.java:9330)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.view.ViewGroup.layout(ViewGroup.java:3795)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1542)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1403)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.widget.LinearLayout.onLayout(LinearLayout.java:1314)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.view.View.layout(View.java:9330)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.view.ViewGroup.layout(ViewGroup.java:3795)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.widget.FrameLayout.onLayout(FrameLayout.java:400)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.view.View.layout(View.java:9330)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.view.ViewGroup.layout(ViewGroup.java:3795)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.view.ViewRoot.performTraversals(ViewRoot.java:1201)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.view.ViewRoot.handleMessage(ViewRoot.java:1944)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.os.Looper.loop(Looper.java:126)
04-11 10:37:55.450: E/AndroidRuntime(971):  at android.app.ActivityThread.main(ActivityThread.java:3997)
04-11 10:37:55.450: E/AndroidRuntime(971):  at java.lang.reflect.Method.invokeNative(Native Method)
04-11 10:37:55.450: E/AndroidRuntime(971):  at java.lang.reflect.Method.invoke(Method.java:491)
04-11 10:37:55.450: E/AndroidRuntime(971):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
04-11 10:37:55.450: E/AndroidRuntime(971):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
04-11 10:37:55.450: E/AndroidRuntime(971):  at dalvik.system.NativeStart.main(Native Method)

再次感谢:)

推荐答案

在创建ArrayAdapter对象时似乎出现了错误. 构造函数中的第三个参数(textViewResourceId)应该是TextView而不是ListView.

更改它,它应该可以正常工作.

There seems to be an error when you are creating the ArrayAdapter object. The third parameter in the constructor (textViewResourceId) should be a TextView instead of a ListView.

Change that and it should be working.

这篇关于在ViewStub中使用ListView时发生NullPointerException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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