我在共享首选项时遇到了一些麻烦。我试图在方向更改之前保存搜索框的文本(编辑文本),然后在方向更改后重新创建活动之后将其恢复。它的工作原理类似于超级按钮。。。除非编辑文本中包含引号。当出现引号并且旋转设备时,尝试以新方向创建活动时应用程序崩溃。仅当出现双引号“时,才会出现此符号,其他所有符号(包括单引号')也可以正常工作。
我收到的错误是android.database.sqlite.SQLiteException:无法识别的令牌:“” ORDER BY name COLLATE 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”,因为它会干扰其他功能。
最佳答案
您可以尝试使用sqlEscapeString from DatabaseUtils转义字符串的字符(未经测试,刚刚在Google上找到了它)
关于android - 存储带有引号的字符串时,Android SharedPreferences崩溃,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7083732/