gpt4 book ai didi

存储带引号的字符串时 Android SharedPreferences 崩溃

转载 作者:行者123 更新时间:2023-11-29 02:11:29 25 4
gpt4 key购买 nike

我在共享首选项方面遇到了一些问题。我试图在方向更改之前保存搜索框的文本(编辑文本),然后在方向更改后重新创建 Activity 后恢复它。它就像一个魅力......除非编辑文本包含引号。当有引号并且我旋转设备时,应用程序在尝试以新方向创建 Activity 时崩溃。只有当有双引号 "时才会出现这种情况,所有其他符号,包括单引号 ',都可以正常工作。

我得到的错误是 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",因为它会干扰其他功能。

最佳答案

您可以尝试使用 sqlEscapeString from DatabaseUtils 转义字符串中的字符(未经测试,只是在谷歌上找到的)

关于存储带引号的字符串时 Android SharedPreferences 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7083732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com