【发布时间】:2014-11-02 19:50:52
【问题描述】:
我有一个有一个主要活动的应用程序,这个活动有5个actionTabs,每个actionTab包含一个fragment,所以我也有5个fragments。
第一个fragment 只显示单词“hello”。
在第二个fragment中,它只是显示一些textviews来指示正在调用活动生命周期的哪个回调。
第三个fragment,在其布局中,包含一个tablelayout,有3行,每行有一个image、textview和一个edittext。当访问这个fragment 包含在这个tab 中时,当我旋转设备时,应用程序不会崩溃。
只有当我访问第四个或第五个tab并旋转包含以下内容的设备时,应用程序才会崩溃:
第四个和第五个tab分别有三个LinearLayout和三个relative layout。第四个fragment的主要linearlayout是垂直方向,嵌套的三个linearlayouts是水平方向,每一个都包含imageview、textview和edittext。
第五个fragemnt与第四个几乎相同,但不是linearlayouts,而是relativlayout。
注意事项:
第二个fragment有onSavedInstance的方法,当访问第四个或第五个fragment时App崩溃,logcat抱怨onSavedInstance并产生如下贴文。
我想知道为什么当我访问第四个fragment或第五个并旋转设备时应用程序崩溃?
LogCat:
11-02 20:48:29.699: E/AndroidRuntime(22282): FATAL EXCEPTION: main
11-02 20:48:29.699:E/AndroidRuntime(22282):进程:com.example.viewpagerwithactiontabstest00,PID:22282 11-02 20:48:29.699: E/AndroidRuntime(22282): java.lang.NullPointerException 11-02 20:48:29.699: E/AndroidRuntime(22282): 在 com.example.viewpagerwithactiontabstest00.Aufgabe_2.onSaveInstanceState(Aufgabe_2.java:142) 11-02 20:48:29.699: E/AndroidRuntime(22282): 在 android.support.v4.app.Fragment.performSaveInstanceState(Fragment.java:1647) 11-02 20:48:29.699: E/AndroidRuntime(22282): 在 android.support.v4.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManager.java:1610)
onSavedInstance() 方法:
@Override
public void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
outState.putString("TEXT", tv_00.getText().toString());
}
【问题讨论】:
-
看来
tv00是null。 -
但是为什么我在第四或第五个片段时为空,否则不为空?
-
你是这个星球上唯一能回答这个问题的人,因为没有人知道你在哪里初始化
tv00。 -
tv_00 在第二个片段中初始化并在第二个片段布局中声明
-
tv_00 UI 元素在 xml 文件中是否具有分配给它的唯一值?
标签: android android-fragments activity-lifecycle