2017-12-22 21 views
0

私のアプリの設定では、チェックボックスをオンにすると、戻るボタンを無効にするチェックボックスがあります。 私はSharedPreferencesを使っています。 しかし、それが本当であっても問題はif文でチェックされているときにfalseに変わります。ブール変数がfalseに変わり続ける

Boolean isLockedB; 

SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); 
isLockedB = sharedPreferences.getBoolean("block_back",false); 

私はデバッグするとき、それはそれからここで、真isLockedB値を示しています

@Override 
public void onBackPressed() { 
    if (drawerLayout.isDrawerOpen(Gravity.RIGHT)){ 
     drawerLayout.closeDrawer(Gravity.RIGHT); 
    }else { 
     if (isLockedB == false){ 
      super.onBackPressed(); 
     }else { 
      return; 
     } 
    } 
} 

それは私のisLockedBが偽であることを示しています。

+0

そのコードは変更されていないので、デバッグを続けて、変更されている場所を調べる必要があります。 –

答えて

1

メイクisLockedBstatic。変数はリサイクルされ、デフォルト状態に戻されます。これはブール値の場合はfalseです。

また、実際に行うべきことは、SharedPreferences値を含むシングルトンクラスを作成することです。あなたのシングルトンがnullの場合、あなたの好みをリロードすることができます。真

-1
private Editor _prefsEditor = sharedPreferences.edit(); 
_prefsEditor.putBoolean("block_back",true); 

設定値のチェックボックスが他のクリックした場合は、以下の文でデフォルト値にfalseを設定しているので、false.Itは常にあなたに虚偽を与える設定。

isLockedB = sharedPreferences.getBoolean( "block_back"、false);

関連する問題