【发布时间】:2011-08-16 19:17:09
【问题描述】:
我在共享首选项方面遇到了一些问题。我试图在方向更改之前保存搜索框的文本(编辑文本),然后在方向更改后重新创建活动后恢复它。它就像一个魅力......除了编辑文本包含引号时。当有引号并且我旋转设备时,应用程序在尝试以新方向创建活动时崩溃。当有双引号 " 时,会发生这种唯一的符号,所有其他符号,包括单引号 ',都可以正常工作。
我得到的错误是 android.database.sqlite.SQLiteException: unrecognized token: "" 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" 因为它会干扰其他功能。
【问题讨论】:
-
这很奇怪。
SharedPreferences的默认 android 实现不使用 SQLite。您的手机型号是什么,Android OS 版本是什么?另外,您如何获得对f_sharedPreferences的引用?请你显示那部分代码好吗? -
我使用的是三星 Galaxy 平板电脑,运行 3.1。我已经更新了我的原始帖子,以展示我是如何获得 f_sharedPreferences 的。谢谢!
标签: android sqlite escaping sharedpreferences orientation-changes