2017-12-22 10 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); 

설정 값 확인란을 클릭하면 true로 설정되고 그렇지 않으면 false로 설정됩니다. false를 설정하면 false가 기본 값으로 설정되어 있기 때문에 false로 설정됩니다.

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

관련 문제