2011-09-13 15 views
0

私は2つの異なるタブホストを持つAndroidアプリケーションで作業しています:MainとChild。 メインタブホストには5つのタブがあり、最後にログインページがある新しいアクティビティが開きます。ログインアクティビティでブール型isLoggedInを作成し、メインタブバーにtrueまたはfalseを渡したいと思います。タブの数。ユーザーがログインしている場合は5を、そうでない場合は4つのタブを表示します。この問題をコードする方法はありますか?Android SharedPreference - TabHostの問題

更新:

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

:私はほとんど同じコードを使用MainActivityで

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

:今私は私が使用して、このcode.InユーザーLogIn.classを使用しているために

そして、次のような2つの状態を確認します。

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

しかし、アプリケーションを開くと、ユーザーの状態を確認する前に5つのタブが表示されます。 これを修正する方法はありますか? }

答えて

1

、あなたは

editor.getBoolean("isLoggedIn", false) 

でないputBooleanと共有して好みの値をチェックし、名称「isLoggedInは、」共有の好みに存在しない場合は、それに対してヌルを配置する必要はありません名前を見つけることができない場合、デフォルト値を返すために、2番目の引数が偽であるfalseを返します。私はあなたが次のコードが必要であると理解しています。

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

このコードは、「isLoggedIn」の値をチェックし、値がtrueでログインした場合4がfalseの場合は5つのタブが表示されます。

別の問題としては、メインアクティビティで値をfalseに更新していますが、そうしないでください。ユーザーがログアウトした後にのみ、そのようにしてください。コードから次の2行を削除してください。

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

実際には少なくとも最初は4つのタブしか表示されていませんが、ログインしても5つのタブは表示されませんでした。 –

+0

私の更新された答えを確認 –

+0

実際に私はこれらの2行のコードを削除し、まだ4つのタブしか表示していません –

0

sharedPreferenceは、アプリケーション全体に共通です。

+0

質問 –

関連する問題