2016-05-12 34 views
-1

我正在尋找一種方法,讓我的片段「恢復」它是先前的狀態,然後再關閉設備(因爲我已將圖像保存到該設備中)。我看到了什麼導致了錯誤,但找不到解決方案(類似的問題似乎沒有回答關於如何在首次打開App/Fragment時加載OnCreate)。 當我打開我的應用程序,它創建於我的主要活動的新片段:當應用程序停止/設備關閉時,在android上保存片段狀態/數據

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 

FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); 
ft.replace(R.id.container, new HomeFragment(),"Home_Fragment") 
.addToBackStack("Home_Fragment").commit(); 

FragmentTransaction bin = getSupportFragmentManager().beginTransaction(); 
bin.replace(R.id.my_image_container, new MyImageFragment(), "banner").commit(); 

    // Listening for image to be sent over 

    RepeatTask(); 
    } 

現在,我已經成功地擁有我的片段保存時,我片段之間切換的所有數據,在我的片段所見的java以下文件:

HomeFragment hm = (HomeFragment)myContext.getSupportFragmentManager().findFragmentByTag("Home_Fragment"); 
FragmentTransaction ft = myContext.getSupportFragmentManager().beginTransaction(); 
ft.replace(R.id.container, hm, "Home_Fragment").commit(); 

但是,當我離開應用程序,這意味着我永久停止或打開手機關閉並重新打開,所有的數據(圖像)都走了,這是有道理的,因爲我的主要活動重新啓動它。 做任何你知道我可以有我的MainActivity不啓動新的片段,每次我打開應用程序,但「恢復」在那裏我有圖像保存,我通過TCP從我的電腦有

+1

可能重複的[android片段 - 如何保存片段中的視圖的狀態,當另一個片段被推上它](http://stackoverflow.com/questions/6787071/android-fragment-how-to-保存狀態的意見在一個片段,當另一個片段) – petey

+0

我可以在片段之間移動並保存其狀態沒有問題。問題是,當我完全停止應用程序(例如關閉手機)並回到它時,我無法弄清楚如何在加載第一片段(圖像因此消失)時關注OnCreate。對不起,如果我不清楚 – Emil

+0

顯然在斷電後「恢復」舊狀態應該保存在文件系統或數據庫中,例如Sqlite。你試過了嗎? – Serg

回答

1

那麼,如果按鈕是基於圖像動態加載。您可以通過圖像讀取緩存循環,併爲每個圖像創建一個按鈕。

http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

如果有需要保存,我會考慮一個SQLiteDatabase(聯合高速緩存)多個屬性 SQLite數據庫可以節省大量相同的數字,tekst,日期和二進制格式的數據的數據類型。 圖像可以保存爲(基礎64)二進制字符串。但是從數據庫加載二進制字符串比緩存更慢。

瞭解更多關於數據庫的位置: http://developer.android.com/training/basics/data-storage/databases.html

兩個鏈接包含的例子。

另外一個小技巧,我想給你的是試圖只保存真正需要的東西,沒有更多。 不要試圖保存用戶界面的東西。 並保存數據儘可能抽象。

學習數據庫規範化會給你更好的洞察力。

+0

謝謝,我會嘗試使用「BLOB」:) – Emil

0

它實際上是舊的國家嘗試並保存片段實例狀態的不良做法。 Android有它自己的方式來處理這個。

問題是,當您想要保存從網頁下載的一些數據並且您不想在重新打開應用程序時再次下載該內容時,您需要將數據保存在知道的地方。 這種類型的解決方案是(磁盤)緩存或sqlite數據庫。當您需要保存的數據是圖像時,保存它們的最佳方法是使用磁盤緩存。

+0

謝謝你更具體的它的圖像進來,但我把它們保存爲具有獨特的onClick監聽器的圖像按鈕,基於我發送到我的應用程序的信息(所以做bla bla bla這個圖像按鈕)。我能否將這些保存到數據庫中,然後讓我的片段「恢復」它們?所以這些圖像按鈕及其功能會重新出現。如果是這樣,你有機會知道我可以使用的一個例子嗎? – Emil

相關問題