2

共有設定に問題があります。向きを変更する前に検索ボックスのテキスト(編集テキスト)を保存し、向きを変更した後にアクティビティが再作成された後、元に戻そうとしています。編集テキストに引用符が含まれている場合を除いて、チャームのように機能します。引用符があり、デバイスを回転させると、新しい方向でアクティビティを作成しようとするとアプリがクラッシュします。この唯一の記号は、二重引用符"がある場合に発生します。一重引用符'を含む他のすべての記号は、正常に機能します。

私が得るエラーはandroid.database.sqlite.SQLiteExceptionです:認識されないトークン: "" ORDER BY nameCOLLATENOCASE"。私の推測では"は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"は他の機能に干渉するため、使用できません。

4

2 に答える 2

1

DatabaseUtilsからsqlEscapeStringを使用して文字列の文字をエスケープしてみることができます(テストされていません。Googleで見つかりました)

于 2011-08-16T19:32:01.433 に答える
0

Androidの問題のようです。この属性をマニフェストのアクティビティ部分に追加してみませんか? テキストを保存するので、保存する必要はありません。

android:configChanges="orientation"

これにより、Android が回転を処理するデフォルトの方法が無効になることに注意してください。そのため、縦向き/横向きで異なるレイアウトを使用することに依存している場合は、別のアプローチを使用することをお勧めします。

于 2011-08-16T19:25:17.333 に答える