1.Demo說明與示範
Redirection這個Demo會涉及到三個Acitivity: RedirectEnter, RedirectMain,RedirectGetter。其Main Activity是RedirectEnter,它啟動RedirectMain,然後在RedirectMain中根據條件來決定是否再啟動RedirectGetter。主要知識點是SharedPreference的使用.
Demo如下:
2.視頻講解
http://www.eyeandroid.com/thread-10683-1-1.html
3.Demo分析
Redirection樣本涉及到三個Acitivity: RedirectEnter, RedirectMain,RedirectGetter。樣本的主Activity為 RedirectEnter ,RedirectEnter 啟動 RedirectMain, 而Activity 會根據某個條件來決定是否將應用的控制權傳給RedirectGetter 或是保持在RedirectMain。
應用代碼中使用到了Shared Preferences (在之前的樣本中介紹過)。 RedirectMain 將檢查某個shared preferences 值是否存在:
- // Retrieve the current text preference. If there is no text
- // preference set, we need to get it from the user by invoking the
- // activity that retrieves it. To do this cleanly, we will
- // temporarily hide our own activity so it is not displayed until the
- // result is returned.
- if (!loadPrefs()) {
- Intent intent = new Intent(this, RedirectGetter.class);
- startActivityForResult(intent, INIT_TEXT_REQUEST);
- }
其它用到的還有startActivityForResult 。這個例子沒有什麼新的知識,只是涉及到了三個Activity。示範了如何根據條件觸發不同的Activity,將應用控制權Redirection到不同的Activity。
這個例子使用者點擊“Go”按鈕,RedirectEnter 啟動RedirectMain ,RedirectMain 會根據shared preferences是否有值決定是否redirect 到RedirectGetter, 第一次或是點擊”Clear and Exit”後,shared preferences 中不含有text值,應用會顯示RedirectGetter 來取的使用者輸入,此時如果使用者輸入並“Apply”後,RedirectGetter將在Shared Preference儲存textView 的值。此後,按“Back” 退回Activity List再啟動RedirectEnter,按“GO”,由於Shared Preferences中有值,RediectMain不會把應用的控制權Redirect到RedirectGetter.