我正在开发一个简单的应用程序,允许用户在网站上发布文章。
它只是一个简单的表单,带有标题和文本的输入和一个发送按钮。
为此,我使用了一个 FragmentActivity,里面有一个名为 ArticleFragment 的 Fragment。
我到处读到保存用户输入的最佳方法是覆盖片段中的 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();
}
如您所见,每次暂停活动时,都会显示一个 Toast 以通知用户输入已保存。
这就是我想要的。但是每当用户改变屏幕的方向时,弹出窗口就会再次显示(因为 Activity 被暂停,然后被销毁),这可能会惹恼用户。
我尝试在 Manifest 中添加 android:configChanges="orientation",但我认为这不是处理此问题的最佳方法。
我也尝试使用 onSaveInstance() 解决方案,但我不明白它是如何工作的:有时 onSavedInstance 为空,有时不是。
有了这一切,主要问题是保存用户输入的最佳方式是什么,方向更改和后退按钮,以及在哪里恢复保存的内容。
谢谢!