天天看點

Android程式設計權威指南第三章的學習

Android程式設計權威指南第三章的學習
  • 應用啟動并建立Activity執行個體後,會調用onCreate(Bundle)、 onStart()和onResume()方法。
  • 單擊裝置的後退鍵,相當于告訴Android系統: “activity已用完,現在不需要它了。”随即, 系統就銷毀了該activity的視圖及其記憶體裡的相關資訊。這實際是Android系統節約使用裝置有限 資源的一種方式。 會調用onPause(),onStop(),onDestory()方法。
  • 單擊主螢幕,會調用onPause(),onStop()方法。

    —————————————————————————————————————————————————————————————

    3.2裝置旋轉與activity生命周期

    裝置旋轉時,系統會銷毀目前QuizActivity執行個體,然後建立一個新的QuizActivity執行個體。

    如何解決這個問題?

    為裝置配置變更建立備選資源,隻要裝置旋轉至水準方向,Android就會自動發現并識别它。具體做法為在在res目錄下建立layout-land目錄,然後再在layout-land目錄下建立資源檔案,具體做法見P53。

    —————————————————————————————————————————————————————————————

    3.2裝置旋轉與activity生命周期

    要修複這個缺陷,旋轉後建立的QuizActivity需要知道mCurrentIndex變量的原值。顯然, 在裝置運作中發生配置變更時,若裝置旋轉,需想個辦法儲存以前的資料。覆寫以下Activity 方法就是一種解決方案:

    protected void onSaveInstanceState(Bundle outState)

    該方法通常在onStop()方法之前由系統調用,除非使用者按後退鍵。(記住,按後退鍵就是告 訴Android,activity用完了。随後,該activity就完全從記憶體中被抹掉,自然,也就沒有必要為重建儲存資料了。

    方法onSaveInstanceState(Bundle)的預設實作要求所有activity視圖将自身狀态資料儲存 在Bundle對象中。Bundle是存儲字元串鍵與限定類型值之間映射關系(鍵值對)的一種結構。

    —————————————————————————————————————————————————————————————

    覆寫 onSaveInstanceState(Bundle)方法

    可通過覆寫onSaveInstanceState(Bundle)方法,将一些資料儲存在bundle中,然後在 onCreate(Bundle)方法中取回這些資料。處理裝置旋轉問題時,将采用這種方式儲存mCurrent- Index變量值。

Android程式設計權威指南第三章的學習
Android程式設計權威指南第三章的學習

3.7 挑戰練習

使用者答完某道題,就禁掉那道題對應的按鈕,防止使用者一題多答。

解答:

Android程式設計權威指南第三章的學習

新增一個mAnswerOrNot屬性,初始為false,代表沒有回答該問題。當點選了mTrueButton或者mFalseButton時,設定mTrueButton和mFalseButton為不可點選

Android程式設計權威指南第三章的學習

updataQuestion函數裡添加判斷該問題是否回答過的if else分支語句,因為點選上一題或下一題時mTrueButton和mFalseButton是否點選可能會随題目發生改變。

Android程式設計權威指南第三章的學習

3.8 挑戰練習

使用者答完全部題後,顯示一個toast消息,給出百分比形式的評分。

解答:

Question類裡新增一個屬性mCorrectOrNot屬性用于表示該問題是否回答正确。

Android程式設計權威指南第三章的學習

mTrueButton和mFalseButton的點選事件裡添加一條判斷語句用于判斷是否為最後一題,若是的話,周遊問題數組中每個對象的mCorrectOrNot屬性的值,然後得出結果并轉化為百分數顯示出來(注:這裡的Toast.make函數的一個屬性為this時會報錯,上網查了改為這個後就行了,但原因還沒弄明白)

Android程式設計權威指南第三章的學習

checkAnswer函數裡給每道題的mCorrectOrNot屬性指派,表明該問題是否回答正确。

Android程式設計權威指南第三章的學習

繼續閱讀