我在我的Activity
的onCreate
上有我的代碼。SharedPreferences /變量未按順序讀取
SharedPreferences globalPreferences = getSharedPreferences(PREF_KEY, Context.MODE_PRIVATE);
boolean hasFinishedIntroduction = globalPreferences.getBoolean(PREF_FINISHED_INTRO), false);
Log.d(TAG, "Has finished introduction: " + hasFinishedIntroduction);
if(!hasFinishedIntroduction){
startActivity(new Intent(this, IntroductionActivity.class));
finish();
}
boolean hasLoggedInUsingFacebook = globalPreferences.getBoolean(PREF_LOGGED_IN_FACEBOOK), false);
boolean hasLoggedInUsingGoogle = globalPreferences.getBoolean(PREF_LOGGED_IN_GOOGLE), false);
Log.d(TAG, "Has logged in using Facebook: " + hasLoggedInUsingFacebook);
Log.d(TAG, "Has logged in using Google: " + hasLoggedInUsingGoogle);
if(!hasLoggedInUsingFacebook && !hasLoggedInUsingGoogle){
startActivity(new Intent(this, SocialLoginActivity.class));
finish();
}
我的問題是,每次我跑我的應用程序時(乾淨安裝),我的應用程序開始我的SocialLoginActivity
是應該被第二檢查。我的第一個檢查被忽略(hasFinishedIntroduction
)。 當然,我試着用Log
消息調試它,但所有工作正常(至少值)。
10-06 03:15:09.907 12969-12969/com.sample.foo D/Bar: Has finished introduction: false
10-06 03:15:09.937 12969-12969/com.sample.foo D/Bar: Has logged in using Facebook: false
10-06 03:15:09.937 12969-12969/com.sample.foo D/Bar: Has logged in using Google: false
顯然,應用程序可以讀取hasFinishedIntroduction
的false
但它忽略了它,並拒絕執行什麼是我的第一if
語句中。
令人驚訝的是,在我登錄我的應用程序後,用戶將被帶回Activity
,然後我的hasFinishedIntroduction
的值將被執行並將開始Activity
我指示它開始。
謝謝你的幫助。
編輯
我忘了,這裏要注意的是,我也把一些Log.d()
在我IntroductionActivity
和SocialLoginActivity
的onCreate
但它確實表明,它並沒有真正調用IntroductionActivity
可言。
感謝您的答覆。不幸的是,它並沒有爲我工作。我忘了注意,我還在其他'Activities'上放了'Log.d()'來判斷它們是否被調用,但是它確實直接到了我的'SocialLoginActivity'。 – CodeHarmonics
你可以在'hasFinishedIntroduction'的if代碼塊中放入日誌,看它是否得到執行。你也可以試着按回來,看到'SociaLoginActivity',看看'IntroductionActivity'是否在後臺 – pgiitu
哦,我以前沒有嘗試過。它看起來像在'if'塊(它打印我的調試信息),但從來沒有啓動我的'IntroductionActivity',並且從'if'塊去掉,並且執行另一個'if'。讓我感到困惑的是,在進入我的SocialLoginActivity後,它執行''startActivity()'到'IntroductionActivity'並且第二次返回到這個'Activity'。 – CodeHarmonics