2012-11-19 30 views
2

我正在开发一个简单的应用程序,允许用户发布网站上的文章。最好的方法来备份用户的输入处理方向变化

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

为此,我在里面使用了一个名为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(); 
} 

正如您所看到的,每次活动暂停时,都会显示Toast以通知用户输入已保存。

这就是我想要的。但是,无论何时用户改变屏幕的方向,弹出窗口都会再次显示(因为活动已暂停,然后被销毁),这可能会使用户感到厌烦。

我试图在Manifest中添加android:configChanges =“orientation”,但我认为这不是解决此问题的最佳方法。

我也尝试使用onSaveInstance()做出解决方案,但我不明白它是如何工作的:有时onSavedInstance是null,有时不是。

所有这些,主要问题是什么是保存用户输入的最佳方式,方向更改和返回按钮,以及恢复保存的位置。

谢谢!

+0

请勿为标的添加标签 –

+0

对不起! – Modzful

回答

0

检查输入值onBackPressed()和任何按钮将用户带到主页的onClick是空的,并显示相应的吐司消息

+0

因为我想要具有与消息应用程序相同的行为。当你输入一个短信,并按回来按钮它说“草稿保存”,但是当你改变屏幕方向时,没有烤面包! – Modzful

+0

也许你可以将它保存在onDestroy()的Bundle中,然后在Bundle为null的情况下在onCreate()中检查 – vodich

+0

我无法在onDestroy中显示Toast():( – Modzful

0

添加机器人:configChanges =“方向”体现的文件。 覆盖onConfigurationChanged。在你调用super.onConfigurationChanged之前保存数据。 如果你有不同的肖像和风景布局文件,你必须删除所有的视图和setcontentview并初始化它们(就像你在创建时所做的那样),所有这些都可以恢复数据

+0

这是最好的方法吗?在这种情况下,会出现代码重复。 – Modzful

+0

将所有保存数据代码放入一个函数中,并在两个地方调用它。您可以避免代码重复。 如果你不想停下来打电话,AFAIK这是最好的方式 – almuneef

+0

谢谢almuneef。我会尝试你的解决方案;) – Modzful

0

我不太关注你的逻辑。让我们看看...你有两个edittext字段和保存按钮,当用户更改屏幕方向销毁时,可以将输入保存在共享首选项或Bundle中,当onCreate()启动时,您可以检查值是否为空,然后显示toast有一份草稿。如果用户点击返回按钮,你也可以保存输入和显示吐司,如果他/她打你发送你只是发送输入,对吧?

相关问题