onSaveInstanceState导致App崩溃

时间:2014-11-02 19:50:53

标签: android android-fragments activity-lifecycle

我有一个包含一个主要活动的应用,此活动有5个actionTabs,每个actionTab包含fragment,因此我还有5个fragments。< / p>

第一个fragment只显示“你好”这个词。

在第二个fragment中,它只显示一些textviews以指示正在调用活动生命周期的哪个回调。

第三个fragment,在其布局中,它包含一个包含3行的tablelayout,每行包含imagetextviewedittext。当访问此fragment中包含的此tab时,当我旋转设备时,应用程序不会崩溃。

仅当我访问第四个或第五个tab并且旋转包含以下内容的设备时,应用程序才会崩溃:

第四个和第五个tab分别有三个LinearLayout和三个relative layout。第四个linearlayout的主fragment垂直定向,三个嵌套的linearlayouts水平定向,每个imageview包含textviewedittextfragemnt

第五个linearlayouts与第四个relativlayout几乎相同,但它不是fragment,而是onSavedInstance

注意

第二个fragment的方法为logcat,当应用在访问第四个或第五个onSavedInstance时崩溃时,fragment会抱怨11-02 20:48:29.699: E/AndroidRuntime(22282): FATAL EXCEPTION: main 并生成以下发布的消息。

我想知道当我访问第四个@Override public void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub super.onSaveInstanceState(outState); outState.putString("TEXT", tv_00.getText().toString()); } 或第五个并旋转设备时应用程序崩溃的原因?

logcat的

{{1}}

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):at 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()方法

{{1}}

1 个答案:

答案 0 :(得分:0)

您的片段可能已创建,但尚未调用onCreateView()。在这种情况下,您不会在onSaveInstanceState()中使用此小部件。

您可以考虑完全删除此onSaveInstanceState(),使用android:freezesText来安排确保此文本视图在配置更改中保留其文本。