2012-11-19 37 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有一份草稿。如果用戶點擊返回按鈕,你也可以保存輸入和顯示吐司,如果他/她打你發送你只是發送輸入,對吧?

相關問題