ユーザーがウェブサイトに記事を投稿できるようにする簡単なアプリを開発しています。
これは、タイトルとテキストの入力と送信ボタンを備えた単純なフォームです。
これを行うために、ArticleFragment という Fragment を内部に持つ FragmentActivity を使用しました。
ユーザーの入力を保存する最良の方法は、フラグメントで onPause() をオーバーライドし、onCreateView() でそれらを復元することであるとどこでも読みました。
@Override
public void onPause() {
Log.i(TAG, "Pausing fragment");
Log.i(TAG, "Saving edits");
// Sauvegarde des saisies
EditText titreEdit = (EditText) getActivity().findViewById(R.id.titre_saisie);
EditText texteEdit = (EditText) getActivity().findViewById(R.id.texte_saisie);
String titre = titreEdit.getText().toString();
String texte = texteEdit.getText().toString();
SharedPreferences settings = getActivity().getPreferences(0);
Editor editor = settings.edit();
editor.putString("titre", titre);
editor.putString("texte", texte);
editor.commit();
Toast toast = Toast.makeText(getActivity(), R.string.article_enregistre, Toast.LENGTH_SHORT);
toast.show();
super.onPause();
}
ご覧のとおり、アクティビティが一時停止されるたびに、トーストが表示され、入力が保存されたことをユーザーに通知します。
それが私が欲しかったものです。ただし、ユーザーが画面の向きを変更するたびに、ポップアップが再び表示され (Activity が一時停止されてから破棄されるため)、これはユーザーを苛立たせる可能性があります。
マニフェストに android:configChanges="orientation" を追加しようとしましたが、これはこの問題に対処する最善の方法ではないと思います。
onSaveInstance() を使用して解決策を作成しようとしましたが、その仕組みがわかりません。onSavedInstance が null の場合もあれば、そうでない場合もあります。
以上のことから、主な問題は、向きの変更と戻るボタンを使用してユーザー入力を保存する最良の方法と、保存したものをどこに復元するかということです。
ありがとうございました!