setcontent的textview中的空指针异常

时间:2012-11-26 04:00:05

标签: android android-layout

我在java.lang.NullPointerException上获取createTabContent以获取以下代码。有两个tabpecs。当我调用并设置选项卡时,第一次更改选项卡就可以了。但当我在第二个选项卡上再次调用时,它会触发行的空指针异常:NoStudentText.setVisibility(View.VISIBLE);

如果没有学生列表的数据,我将显示No Student Text。它显示第一次调用的文本。但如果我第二次打电话给那个标签,就会收到错误。

tspecStudent.setContent(new TabContentFactory() {
            public View createTabContent(String arg0) {
                if(listStudent != null && listStudent .size() > 0) {
                    //show the student list
                } else {
                    TextView noStudentText = (TextView)findViewById(R.id.NoStudentText);
                    noStudentText.setVisibility(View.VISIBLE);
                    return noStudentText;
                }

            }
        });

我在主布局中包含了另一个xml。

main.xml中

<TabHost
        android:id="@+id/tabhostMain"
        android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1" > 
....
<include layout="@layout/tab_student" />

</TabHost>

tab_student.xml

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/tabcontent"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

 <ListView
        android:id="@+id/StudentList"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="false" />

<TextView
        android:id="@+id/NoStudentText"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:text="No Student"
        android:visibility="gone" />

</FrameLayout>

2 个答案:

答案 0 :(得分:2)

有些时候因为你的应用条件,它无法初始化,所以, 将此变量设为全局变量 -

    TextView _noStudentText;

在onCreate方法::

中初始化它
   _noStudentText = (TextView)findViewById(R.id.NoStudentText);

现在根据您的需要更改可见性 -

    _noStudentText.setVisibility(View.VISIBLE);

答案 1 :(得分:0)

也许您忘了添加setContentView(R.layout.your_layout);

super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);