2013-11-29 61 views
0

有沒有一種簡單的方法可以將整個視圖組與其數據放在一起保存?例如,如果最初我有這個視圖,並且在應用程序中運行某些視圖的背景圖像更改,某些視圖將變爲不可見,或其「文本更改等。如何保存視圖的狀態以防用戶退出應用程序?保存狀態的視圖

<RelativeLayout android:layout_width="wrap_content" android:id="@+id/water_room_common" 
    android:layout_height="wrap_content" xmlns:android="http://schemas.android.com/apk/res/android" 
    > 

    <!-- storage layout --> 
<View android:id="@+id/gap" android:layout_width="wrap_content" 
     android:layout_height="0dip" android:layout_alignParentBottom="true" /> 

    <RelativeLayout android:id="@+id/storage" 
     android:layout_width="wrap_content" android:layout_height="wrap_content" 
     android:layout_above="@id/gap" android:layout_marginBottom="10dp" 
     android:layout_marginRight="27dp" android:layout_marginLeft="10dp" 
     android:layout_toLeftOf="@id/bag" android:orientation="horizontal" 
     > 

     <ImageButton android:id="@+id/ImageButton02" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:layout_alignTop="@+id/ImageButton01" 
      android:layout_marginRight="16dp" android:layout_toLeftOf="@+id/ImageButton01" 
      android:background="@drawable/single_square" android:onClick="itemSelected" /> 

     <ImageButton android:id="@+id/ImageButton03" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:layout_alignTop="@+id/ImageButton01" 
      android:layout_centerHorizontal="true" android:layout_marginRight="16dp" 
      android:layout_toLeftOf="@+id/ImageButton02" android:background="@drawable/single_square" 
      android:onClick="itemSelected" 
      /> 

     <ImageButton android:id="@+id/ImageButton04" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:layout_alignTop="@+id/ImageButton01" 
      android:layout_marginRight="16dp" android:layout_toLeftOf="@+id/ImageButton03" 
      android:adjustViewBounds="true" android:background="@drawable/single_square" 
      android:onClick="itemSelected" 
      /> 

     <ImageButton android:id="@+id/ImageButton05" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:layout_alignTop="@+id/ImageButton01" 
      android:layout_marginRight="16dp" android:layout_toLeftOf="@+id/ImageButton04" 
      android:adjustViewBounds="true" android:background="@drawable/single_square" 
      android:onClick="itemSelected" 
      /> 

     <ImageButton android:id="@+id/ImageButton06" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:layout_alignTop="@+id/ImageButton01" 
      android:layout_marginRight="16dp" android:layout_toLeftOf="@+id/ImageButton05" 
      android:adjustViewBounds="true" android:background="@drawable/single_square" 
      android:onClick="itemSelected" 
      /> 

     <ImageButton android:id="@+id/ImageButton01" 
      android:layout_width="wrap_content" android:layout_height="wrap_content" 
      android:layout_alignParentBottom="true" 
      android:layout_alignParentRight="true" android:background="@drawable/single_square" 
      android:onClick="itemSelected" 
      /> 
    </RelativeLayout> 

    <ImageButton android:id="@+id/bag" android:layout_width="65dp" 
     android:layout_height="65dp" android:layout_alignBottom="@+id/storage" 
     android:layout_alignParentRight="true" android:layout_marginRight="10dp" 
     android:adjustViewBounds="true" 
     android:onClick="bagClicked"/> 
    <ImageButton android:id="@+id/left" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:layout_alignLeft="@+id/storage" 
     android:layout_centerVertical="true" android:background="@null" 
     android:onClick="previousWall" android:src="@drawable/left" /> 
    <ImageButton android:id="@+id/right" android:layout_width="wrap_content" 
     android:layout_height="wrap_content" android:layout_alignRight="@id/bag" 
     android:layout_centerVertical="true" android:background="@null" 
     android:onClick="nextWall" android:src="@drawable/right" /> 

</RelativeLayout> 

回答

0

看到這個answer。您需要覆蓋onSaveInstanceState以進行暫時更改,或覆蓋和onResume以進行永久更改。

閱讀API指南here

更新

這是this training 圖片這種情況的彙總。你有一個記事本應用程序。在主屏幕上,用戶擁有最近創建的筆記列表(NoteList Activity),用戶可以選擇創建新筆記或編輯現有筆記,並將更改存儲在數據庫中。 當用戶點擊某個項目時,會將其他活動(NoteEditActivity)帶到前臺。如果用戶正在編輯筆記,並且由於某種原因NoteEditActivity失去焦點(例如,呼叫進入或用戶只是決定切換到另一個應用程序而沒有單擊「確認按鈕」),則NoteEditActivity從關注點轉移到暫停後不久,然後停止。 爲防止用戶丟失當前的編輯,您需要撥打,您希望在其中保存對數據庫所做的任何更改。現在,如果應用處於停止狀態(onStop),並且用戶返回到編輯狀態,則不會通過onCreate,而是通過onResume這是您希望從用戶離開的位置「恢復」的位置。

這幅圖應該進一步解釋。 請注意,每次活動即將關注而不是onCreate時,onResume如何被調用。

您可以按照上面的培訓以獲得更好的理解。

enter image description here

+0

和的onSaveInstanceState保存onRestoreInstanceState只有當設備殺死的,因爲內存不足時,或者當方向變化,這不是問題,我因爲我的應用程序是唯一的景觀應用。我不僅需要在瞬態變化中保存視圖。 至於重寫onPause和onResume你有什麼確切的建議?因爲它實際上是我的問題 – Nazerke

+0

我想保存視圖不是數據,如字符串,整型等,而不是用戶輸入。你知道我們在setContentView(layoutA)中定義爲佈局文件的xml。在應用程序運行期間,這個layoutA被改變了:它的一些imagebuttons改變了背景圖片,一些按鈕變成了不可見的等等。所以我想保存新版本的layoutA onPause()並且重新創建onResume – Nazerke