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을 반환합니다. 이유는 무엇입니까?
==와 같음의 차이점은 무엇입니까? 문자열 데이터를 저장하려면이 메서드는 editor.putString (key, value) .commit(); – user3717163
==를 사용하면 두 객체가 정확히 같은지 (동일한 인스턴스), 'equals'를 사용하여 내용 (문자열 자체)을 비교하고 있는지 비교할 수 있습니다. 이것은 100 %는 아니지만 두 문자열이 같은 값을 가지고 있더라도 ==를 사용하면 false를 반환 할 수 있습니다. 이 링크를 확인하십시오. http://stackoverflow.com/questions/2486191/java-string-pool – zozelfelfo
그래, equals 메서드를 사용하여 작동합니다! 고마워! – user3717163