是否有一种简单的方法可以将整个视图组与其数据一起保存?例如,如果最初我有这个视图,并且在应用程序运行期间一些视图的背景图像更改,一些视图变得不可见,或其“文本更改,等等。如果用户退出应用程序,我如何保存视图的状态?
<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 :(得分:0)
见answer。您需要覆盖onSaveInstanceState
进行暂时更改,或覆盖onPause
和onResume
进行永久性更改。
阅读API指南here
更新
这是this training的摘要
想象这个场景。你有一个记事本应用程序。在主屏幕上,用户具有最近创建的注释列表(NoteList活动),并且用户可以选择创建新注释或编辑现有注释,并且更改将存储在数据库中。
当用户单击某个项目时,会将另一个活动(NoteEditActivity)带到前台。如果用户正在编辑注释并且NoteEditActivity由于某种原因而失去焦点(例如,调用进来或者用户只是决定切换到另一个应用而不点击“确认按钮”),NoteEditActivity将从焦点转移到被停顿后不久就停了下来。
要防止用户丢失当前编辑,您需要调用onPause
,以便保存对数据库的任何更改。现在,如果应用程序处于停止状态(onStop
)且用户返回编辑状态,则不会通过onCreate
,而是通过onResume
,这是您要从中“恢复”的地方用户离开的地方。
这张图应该进一步解释。 注意每次活动即将集中而不是onCreate时,如何调用onResume。
您可以按照上述培训进行更好的理解。