2

공유 환경 설정에 문제가 있습니다. 방향 변경 전에 검색 상자의 텍스트 (편집 텍스트)를 저장하려고 시도하고 방향 변경에 따라 작업이 다시 생성 된 후 다시 검색하려고합니다. 그것은 편집 텍스트가 따옴표를 포함하는 경우를 제외하고는 매력처럼 작동합니다. 따옴표가 있고 장치를 회전하면 새로운 방향으로 작업을 만들 때 응용 프로그램이 충돌합니다. 이 유일한 기호는 큰 따옴표 "가있을 때 발생하며 작은 따옴표를 포함한 다른 모든 기호는 정상적으로 작동합니다큰 따옴표가있는 문자열을 저장할 때 Android SharedPreferences가 충돌 함

오류는 android.database.sqlite.SQLiteException입니다 : 인식 할 수없는 토큰 :" "ORDER BY 이름 일괄 NOCASE ". 내 추측은 "SQL 쿼리가 쓰여지는 방식에 영향을 미치고있다. 나는 SharedPreferences에 저장하기 전에 \"를 모두 교체하고 문자열을 다시 가져올 때 \ "를 모두 사용한다." .? 문제 사람은 다음과 같이

내 코드는이 문제를 해결하는 방법을 알고!

@Override 
public void onResume() 
{ 
    super.onResume(); 
    String searchText = f_sharedPreferences.getString("searchText", ""); 
    f_searchBox.setText(searchText); 
} 

@Override 
public void onPause() 
{ 
    super.onPause(); 
    String searchText = f_searchBox.getText().toString(); 
    f_sharedPreferences.edit().putString("searchText", searchText).commit(); 
} 

감사합니다 당신의 도움이 아주 많이 감사합니다

편집 :. 내에서 onCreate 방법에있어서, 내가 얻을 f_sharedPreferences을 다음 줄을 사용하십시오.

f_sharedPreferences = getSharedPreferences(this.getClass().getName(), Context.MODE_PRIVATE); 

또한 다른 기능을 방해하므로 android : configChanges = "orientation"을 사용할 수 없습니다.

+0

(테스트하지, 그냥 구글에 그것을 발견). 'SharedPreferences'의 기본 안드로이드 구현은 SQLite를 사용하지 않습니다. 휴대 전화 모델, Android OS 버전은 무엇입니까? 또한'f_sharedPreferences'에 대한 참조를 어떻게 얻습니까? 코드 부분을 보여 주시겠습니까? – inazaruk

+0

삼성 갤럭시 타블렛을 사용하여 3.1을 실행 중입니다. f_sharedPreferences가 어떻게 표시되는지 원래 게시물을 업데이트했습니다. 감사! – Chris

답변

0

Android 문제와 같습니다. 왜이 속성을 Manifest의 Activity 부분에 추가하지 않는 것이 좋을까요? 텍스트를 저장할 필요가 없도록 텍스트를 저장합니다.

android:configChanges="orientation" 

그냥이 안드로이드 회전을 처리하는 기본 방법을 사용할 수 없게됩니다 것을 명심, 그래서 당신은 세로/가로에 대해 서로 다른 레이아웃을 사용하는 방법에 의존하는 경우, 다른 방법을 사용하실 수 있습니다. 당신은 sqlEscapeString from DatabaseUtils와 문자열의 문자를 탈출 시도 할 수

+0

이것은 권장 사항이 아닙니다. 'configChanges'는 많은 단점을 가지고 있으며, 일반적으로 매우 강 대한 (대부분 성능) 이유 없이는 사용되어서는 안됩니다. – inazaruk

+0

그것은 어떻게 사용되는지에 달려 있습니다. 사용자가 의존하는 다른 구성 변경 사항 (예 : 여러 레이아웃)이있는 경우에만 눈살을 찌푸리게됩니다. 나는 Android 마켓에있는 내가 개발 한 앱에 이것을 사용하며 완벽하게 작동합니다. – Phil

+0

구현중인 다른 기능을 방해하기 때문에이 방법을 사용할 수 없습니다. 그래도 고마워! – Chris