我在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>
答案 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);