2012-05-28 3 views
0

그래서 SharedPreference가 있습니다. logged_in을 (를) 호출합니다. 내가 선호도를 얻고 그것이 1인지 확인합니다. 새로운 활동을 시작해야한다면 그렇지 않으면 실제로 그것이 무엇인지를 나에게 보여주고 싶습니다. 여기에 코드입니다 : 정말 이상한 그 대신 LoggedIn 활동을 시작하는 기본보기를로드하는 것입니다 무엇여기에 무슨 일이 있는지 잘 모르겠다

@Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     PreferenceManager.setDefaultValues(this, R.xml.preferences, false); 

     prefs = getSharedPreferences("preferences", MODE_PRIVATE); 

     // Check if the user is logged in 
     String loggedIn = prefs.getString("logged_in", null); 

     if(loggedIn != "1") { 
      setContentView(R.layout.main); 
      TextView textView = (TextView) findViewById(R.id.login_status); 
      textView.setText(prefs.getString("logged_in", null)); 
     } 

     else { 
      startActivity(new Intent(this, LoggedInActivity.class)); 
     } 
    } 

, 그러나 그것은 1 인 그래서 제가 보는 내용에 따라 같은 logged_in 환경 설정을 표시 새로운 활동을 시작해야하지만 그렇지 않습니다. 나는 이것에 정말로 혼란 스럽다. 어떤 도움이라도 대단히 감사합니다.

답변

4

문자열 값 대신 참조를 비교하고 있습니다. 즉, 은이 두 참조가 같은 객체 대신 을 가리키며이 두 객체의 내용이 같음을 말합니다.. 대신 수행해야합니다 loggedInnull 경우

if(!loggedIn.equals("1")) 

참고하지만, 그 코드는 NullPointerException을 올릴 것이다. 그래서이 더 적합 할 것 : 말했다

if(loggedIn == null || !loggedIn.equals("1")) 

,이 특별한 경우에 당신이 int 기본 설정을 사용하여 더 나을 것입니다.

+0

오! 좋은 당신 덕분에! 나는 그 사실을 알아야한다고 생각합니다. 어쨌든, 다시는 실수하지 않겠습니다! 고맙습니다 !!! –

관련 문제