2

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

它只是一个简单的表单,带有标题和文本的输入和一个发送按钮。

为此,我使用了一个 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 为空,有时不是。

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

谢谢!

4

3 回答 3

0

检查 onBackPressed() 和 onClick 中的输入值是否为空,该按钮将用户带到主页并显示适当的 Toast 消息

于 2012-11-19T09:02:40.790 回答
0

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

于 2012-11-19T09:25:28.623 回答
0

我不太符合你的逻辑。让我们看看...您有两个编辑文本字段和保存按钮,当用户在销毁时更改屏幕方向时,您可以将输入保存在共享首选项或 Bundle 中,当 onCreate() 启动时,您可以检查值是否不为空,然后显示 toast有一个草稿。如果用户点击后退按钮,您还可以保存输入并显示 toast,如果他/她点击发送,您只需发送输入,对吗?

于 2012-11-19T09:39:50.170 回答