2011-09-13 63 views
0

我正在開發Android應用程序,它有兩個不同的tabhost:Main和Child。 在主tabhost我有5個不同的標籤,最後一個打開新的活動,我有登錄頁面。我想創建一個布爾類型isLoggedIn登錄活動,並傳遞true或false到主選項卡欄,因爲我想要更改如果用戶登錄,我會有5,如果沒有,我會有4個選項卡。所以,如何編碼此問題的任何建議?Android SharedPreference - TabHost問題

更新:

現在我用我用這個code.In用戶LogIn.class:

SharedPreferences isLogged = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
     SharedPreferences.Editor editor = isLogged.edit(); 
     editor.putBoolean("isLoggedIn", isLoggedIn); 
     editor.commit(); 

在MainActivity我使用幾乎相同的代碼:

SharedPreferences isLogged = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); 
     SharedPreferences.Editor editor = isLogged.edit(); 
     editor.putBoolean("isLoggedIn", false); 
     editor.commit(); 

我檢查兩種狀態:

if(editor.putBoolean("isLoggedIn", false) != null){ 
// show 5 tabs 
}else 
{ 
// show 4 tabs; 

但是,當我打開我的應用程序,我得到5個選項卡,甚至在檢查用戶的狀態之前。 任何想法如何解決這個問題? }

回答

1

你在共享偏好檢查值與

editor.getBoolean("isLoggedIn", false) 

不putBoolean,你不必把一個空的反對,如果名稱「isLoggedIn」是不存在的共同喜好,它將返回false,即第二個參數用於返回默認值(如果找不到名稱)。據我所知你需要下面的代碼。

if(editor.getBoolean("isLoggedIn", false)){ 
// show 5 tabs 
}else 
{ 
// show 4 tabs; 

此代碼將檢查「isLoggedIn」值,並會顯示5個選項卡,如果該值爲true與4,如登錄的是假的。

至於另一個問題,您在主活動中用false更新值,不要這樣做,只有在用戶註銷後才執行該操作。所以從代碼中刪除以下兩行。

editor.putBoolean("isLoggedIn", false); 
     editor.commit(); 
+0

其實至少它在開頭只顯示4個標籤,但是當我登錄時,5個標籤沒有顯示出來。 –

+0

查看我的更新回答 –

+0

其實我刪除了這兩行代碼,仍然只顯示4個標籤 –

0

使用sharedPreference,這是整個應用程序的共同點。

+0

問題更新 –