备份用户输入处理方向更改的最佳方法

时间:2012-11-19 08:58:55

标签: android backup fragment orientation-changes

我正在开发一个简单的应用程序,允许用户在网站上发布文章。

这只是一个简单的表单,包含标题和文本输入以及发送按钮。

为此,我在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,有时不是。

有了这一切,主要的问题是保存用户输入的最佳方法是什么,方向更改和后退按钮,以及恢复保存内容的位置。

谢谢!

3 个答案:

答案 0 :(得分:0)

检查onBackPressed()中的输入值是否为空以及onClick任何将用户带到Home并显示相应Toast消息的按钮

答案 1 :(得分:0)

将android:configChanges =“orientation”添加到清单文件中。 覆盖onConfigurationChanged。在调用super.onConfigurationChanged之前保存数据。 如果您有纵向和横向的不同布局文件,您必须删除所有视图和setcontentview并初始化它们(就像您在创建时所做的那样),所有这些都可以恢复数据

答案 2 :(得分:0)

我不太关注你的逻辑。让我们看看......你有两个edittext字段和保存按钮,当用户在破坏时更改屏幕方向时,你可以在共​​享偏好或Bundle中保存输入,当onCreate()启动时,你可以检查值是否为空,然后显示吐司有一个草案。如果用户点击后退按钮你还可以保存输入并显示吐司,如果他/她点击发送你只是发送输入,对吗?