我正在开发一个简单的应用程序,允许用户在网站上发布文章。
这只是一个简单的表单,包含标题和文本输入以及发送按钮。
为此,我在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以通知用户输入已保存。
这就是我想要的。但是每当用户更改屏幕的方向时,弹出窗口会再次显示(因为“活动”已暂停,然后被销毁),这可能会使用户感到烦恼。
我试图在Manifest中添加android:configChanges =“orientation”,但我认为这不是解决此问题的最佳方法。
我也尝试用onSaveInstance()创建一个解决方案,但我不明白它是如何工作的:有时onSavedInstance为null,有时不是。
有了这一切,主要的问题是保存用户输入的最佳方法是什么,方向更改和后退按钮,以及恢复保存内容的位置。
谢谢!
答案 0 :(得分:0)
检查onBackPressed()中的输入值是否为空以及onClick任何将用户带到Home并显示相应Toast消息的按钮
答案 1 :(得分:0)
将android:configChanges =“orientation”添加到清单文件中。 覆盖onConfigurationChanged。在调用super.onConfigurationChanged之前保存数据。 如果您有纵向和横向的不同布局文件,您必须删除所有视图和setcontentview并初始化它们(就像您在创建时所做的那样),所有这些都可以恢复数据
答案 2 :(得分:0)
我不太关注你的逻辑。让我们看看......你有两个edittext字段和保存按钮,当用户在破坏时更改屏幕方向时,你可以在共享偏好或Bundle中保存输入,当onCreate()启动时,你可以检查值是否为空,然后显示吐司有一个草案。如果用户点击后退按钮你还可以保存输入并显示吐司,如果他/她点击发送你只是发送输入,对吗?