2014-06-16 2 views
0

문제가 있습니다. 내 마지막 응용 프로그램을 닫기 전에 열린 마지막 조각을 복원하려면 SharedPreferences를 사용하고 싶습니다. 각 조각의 onCreateView에 공유 환경 설정에 문자열을 저장하는 코드 스 니펫을 넣어 두었습니다.응용 프로그램 닫기 전에 마지막 단편을 복원하십시오.

if(savedIstanceState == null) { 
      pref = new SharedPref(this); 
      String prefe = pref.getPreString("LastPage"); 

      if(prefe == "0") { 
       fragment = new Fragment0(); 
      } else if(prefe == "1") { 
       fragment = new Fragment1(); 
      } else if(prefe == "2") { 
       fragment = new Fragment2(); 
      } else { 
       fragment = new Fragment3(); 
      } 

      getFragmentManager().beginTransaction().add(R.id.container, fragment).commit(); 
     } 

환경 설정에서 예를 들어 0 인 경우 항상 Fragment3을 반환합니다. 이유는 무엇입니까?

답변

1

먼저 ==을 사용하여 문자열을 비교하지 말고 대신 equals을 사용하십시오. 둘째로 나는 값을 저장하는 방법을 보여주지 않았으므로 환경 설정을 정확하게 저장한다고 가정합니다.

희망이 있습니다.

+0

==와 같음의 차이점은 무엇입니까? 문자열 데이터를 저장하려면이 메서드는 editor.putString (key, value) .commit(); – user3717163

+0

==를 사용하면 두 객체가 정확히 같은지 (동일한 인스턴스), 'equals'를 사용하여 내용 (문자열 자체)을 비교하고 있는지 비교할 수 있습니다. 이것은 100 %는 아니지만 두 문자열이 같은 값을 가지고 있더라도 ==를 사용하면 false를 반환 할 수 있습니다. 이 링크를 확인하십시오. http://stackoverflow.com/questions/2486191/java-string-pool – zozelfelfo

+0

그래, equals 메서드를 사용하여 작동합니다! 고마워! – user3717163

관련 문제