我的應用程序有1個活動,其中有一些片段。但是,當我進入我的片段(JungleInfo),然後點擊菜單按鈕並轉到手機的「顯示」部分,將Android設備的字體改爲例如Normal或Large或Normal。一旦我這樣做,我再次打開我的應用程序,認爲我的應用程序中的文本應該增長/縮小,並仍然在像我在其他應用程序中看到的相同的片段,但它只是崩潰。當我離開我的應用程序更改設備字體並返回到我的應用程序時,它崩潰。
這Log.i代碼在這裏片段是當我從活動(MainActivity)去 - > ListFragment(JungleList片段) - >片段(JungleInfo片段)
10-01 12:47:45.193: I/MainActivity(1039): onCreate
10-01 12:47:45.453: I/MainActivity(1039): onStart
10-01 12:47:45.483: I/MainActivity(1039): onResume
10-01 12:47:50.913: I/Jungle-ListFragment(1039): onAttach
10-01 12:47:50.923: I/Jungle-ListFragment(1039): onCreateView
10-01 12:47:50.993: I/Jungle-ListFragment(1039): onActivityCreated
10-01 12:47:52.244: I/Jungle-ListFragment(1039): onDestroyView
10-01 12:47:52.244: I/JungleInfo-Fragment(1039): onAttach
10-01 12:47:52.244: I/JungleInfo-Fragment(1039): onCreate
10-01 12:47:52.244: I/JungleInfo-Fragment(1039): onCreateView
10-01 12:47:52.924: I/JungleInfo-Fragment(1039): onActivityCreated
現在我只是去,改變了設備字體大小,然後重新進入我的應用程序,這是我所得到的:
10-01 12:48:23.533: I/JungleInfo-Fragment(1039): onPause
10-01 12:48:23.533: I/MainActivity(1039): onPause
10-01 12:48:24.253: I/MainActivity(1039): onStop
10-01 12:48:54.313: I/JungleInfo-Fragment(1039): onDestroyView
10-01 12:48:54.373: I/MainActivity(1039): onDestroy
10-01 12:48:54.483: I/Jungle-ListFragment(1039): onAttach
10-01 12:48:54.503: I/JungleInfo-Fragment(1039): onAttach
10-01 12:48:54.503: I/JungleInfo-Fragment(1039): onCreate
10-01 12:48:54.503: I/MainActivity(1039): onCreate
10-01 12:48:55.423: I/JungleInfo-Fragment(1039): onCreateView
10-01 12:48:55.483: D/AndroidRuntime(1039): Shutting down VM
10-01 12:48:55.483: W/dalvikvm(1039): threadid=1: thread exiting with uncaught exception (group=0x409c01f8)
10-01 12:48:55.513: E/AndroidRuntime(1039): FATAL EXCEPTION: main
10-01 12:48:55.513: E/AndroidRuntime(1039): java.lang.RuntimeException: java.lang.NullPointerException
我跟蹤這個發現什麼是零,我發現了這一點,
在我JungleInfo CLAS的I有這樣的:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
...
jungleChoice = ((MainActivity)getActivity()).fragmentDataJungle.toString(); //This is null when the app gets loaded up again after a device font change.
...
}
現在通過它第一次運行不爲空監守我用這告訴下片段用戶在選擇ListFragment什麼,但是當我退出了改變設備的字體和然後重新輸入它現在爲空的應用程序。我想我需要在我的Activity或Fragments生命週期(特別是在onPause(),onResume()或從我收集的內容中做些事情我的onCreateView()方法中的碎片處理savedInstanceState)來保存jungleChoice中保留的內容。但是,如果是這種情況,我不知道如何將其保存在onPause()中,然後將其加載回onResume()/ onCreateView()。任何人都可以闡明我的問題在這裏或可能的解決方案嗎?
首先命中SO搜索savedInstanceState http://stackoverflow.com/questions/151777/saving-activity-state-in-android – Simon
@Simon真的不值得投票支持,如果這是你,但謝謝你爲輸入。此外,我也一直在那裏,史蒂夫莫斯利所說的是我沒有按照你暗示的方式去做它,因爲它不是像你所建議的那樣,而是以onPause/onResume的方式進行,因爲它不是生命週期的一部分,除非我完全錯過了某些東西你沒有說明的信息使用。 –
我沒有downvote,我不暗示任何東西。我對該討論的閱讀涵蓋了我所能想到的所有選項。 – Simon