即然要寫 Tool ,當然就來玩玩新技術了!
這次被拿出來研究的,就是 PreferenceActivity + PreferenceFragment 這個 Google 大力推的新組合!
但!我的人生總是不會這麼順利呀呀呀~~~~~~
在開發的過程中,發生了一件意外,也讓我注意到了這個小地方,在這裡跟大家分享一下。
其實發生的問題很簡單,就是我的 PreferenceFragment 怎麼樣也打不開....
在 Header.xml 裡面我清楚的定義了下面的內容,
<header android:id="@+id/demodisplay_1" android:fragment="com.TAB.android.demo.ui.DemoDisplay" android:title="@string/signal_strength_title" android:summary="@string/signal_strength_summary" />但卻怎樣也無法打開 DemoDisplay,只好乖乖認命跑去 Android developer 把 PreferenceActivity 乖乖的 K 一遍,但怎麼檢查卻都還是無法成功的叫起 DemoDisplay。甚至一度懷疑到,是不是只能叫起 InnerClass 的 PreferenceFragment ... (當然,這個懷疑真的很瞎..)
最後,沒辨法了,只好跑去把 PreferenceActivity 的 Source code 拿出來 K ...
原來,連接到 Fragment 的方法其實很單,不過就是個 StartActivity 呼叫回自己罷了。
當 PreferenceActivity 再次被叫起時,在 onCreate() 進行一連串的 initiate 動作,經由帶來的參數來決定是否/如何顯示 Fragment。
但,這個結論讓我更加的不解,那為什麼我的程式不會跑進 onCreater() 呢?
當程式的問題和 Activity 的生命週期發生了關係時,慢慢的就會開始懷疑到 AndroidManifest 上頭,最後,終於在一個該死的地方讓我找出了原因...
android:launchMode="singleTask"對,就是這麼的該死,魔鬼藏在細節中呀!!!!!!!
就是這個該死的 launch mode 導至 PreferenceActivity 的 Fragment 無法正常運作。
把它拿掉就一切正常了。
唉,所以,在開發 Android 程式時,真的要小心自己的每一步呀!
在這裡把這個解了我一下午的問題分享給大家,希望對某些人有幫助。
您好,我最近才在玩android程式.
回覆刪除我在android development教學中"Building a Dynamic UI with Fragments"遇到一個問題,一直無法解決.
http://developer.android.com/training/basics/fragments/index.html
這個教學有一個sample program,下載FragmentBasics.zip後,我把它Import到ADT中可以順利build出來,但在執行時總是會出現"很抱歉,Fragment Basics已停止"
但我一直找不出問題出在哪裡.不知你可以下載這個範例試試嗎?
感恩!
Hi,
刪除你好。我還沒下載這個範例,但也許你可以試著把 exception 完整的貼上來。
一般而言,我們除錯都是靠 log 來判別,也許可以用這個機會,讓我們一起研究一下怎麼分析 log。
你說如何呢?