2

我正在java.lang.NullPointerException使用createTabContent以下代码。有两个标签规范。当我打电话并设置标签时,第一次更改标签就可以了。但是当我在第二个选项卡上再次调用时,它命中了 line 的空指针异常: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。

主要的.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>
4

2 回答 2

2

有时由于您的应用条件,它无法初始化,所以将此变量设为全局变量 -

    TextView _noStudentText;

在 onCreate 方法中初始化它::

   _noStudentText = (TextView)findViewById(R.id.NoStudentText);

现在根据您的需要更改可见性,如下所示 -

    _noStudentText.setVisibility(View.VISIBLE);
于 2012-11-26T05:54:44.100 回答
0

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

super.onCreate(savedInstanceState);
setContentView(R.layout.your_layout);
于 2012-11-26T04:59:44.703 回答