0

我正在开发一个应用程序,用户可以在其中填写带有照片和一些是/否问题的表格。选择是时,您需要在对话中添加额外信息。然后将此信息插入到 a 中TextView,并将此TextView插入到 aLinearLayout中。

问题是,当用户切换到另一个应用程序时,这个屏幕会进入后台,然后被 Android 销毁(因为系统需要内存)。然后当用户返回应用程序时,该onRestoreInstanceState()方法被调用,带回了一些变量,但没有返回TextView内部LinearLayout。我正在使用 Android 注释来返回这些变量。如何恢复那些 Android 视图?

<LinearLayout
                android:id="@+id/estoque_zerado_pergunta_layout"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:visibility="visible">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/existe_estoque_zerado"
                    android:textSize="@dimen/abc_text_size_large_material"
                    android:layout_margin="5dp"/>

                <RadioGroup
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal">

                    <RadioButton
                        android:id="@+id/radio_estoque_zerado_sim"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/sim" />

                    <RadioButton
                        android:id="@+id/radio_estoque_zerado_nao"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:checked="true"
                        android:text="@string/nao"/>

                </RadioGroup>

            </LinearLayout>

            <LinearLayout
                android:id="@+id/estoque_zerado_layout"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical"
                android:visibility="gone" >

                <LinearLayout
                    android:id="@+id/estoque_zerado_itens_layout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical" >

                    <!--Lista de itens aqui-->

                </LinearLayout>

                <LinearLayout
                    android:id="@+id/add_estoque_zerado_item"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:orientation="horizontal"
                    android:padding="5dp" >

                    <ImageView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:paddingRight="10dp"
                        android:src="@drawable/ic_adicionar"
                        android:contentDescription="@string/adicionar_estoque_zerado"/>

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:gravity="center_vertical"
                        android:text="@string/adicionar_estoque_zerado"
                        android:textSize="@dimen/abc_text_size_medium_material" />

                </LinearLayout>

            </LinearLayout>

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    Log.d("onRestoreInstanceState", "onRestoreInstanceState: chamou onRestoreInstanceState");}

    @Override
public void onSaveInstanceState(Bundle bundle) {
    super.onSaveInstanceState(bundle);
    Log.d("onSaveInstanceState", "onSaveInstanceState: chamou onSaveInstanceState");}

对不起我的初学者英语。提前致谢。

4

3 回答 3

0

据我所知onRestoreInstanceState,不会恢复您的观点。onCreateonRestoreInstanceState使用相同的方法Bundle来初始化您的视图并签savedInstanceStateonCreate。在下面查看文档。

https://developer.android.com/reference/android/app/Activity.html#onRestoreInstanceState(android.os.Bundle)

https://developer.android.com/training/basics/activity-lifecycle/recreating.html#RestoreState

于 2016-08-03T12:32:47.543 回答
0

如果您希望 Android 自动将状态保存在 onSaveInstanceState 中,您的视图需要有一个 ID

于 2019-11-28T23:04:54.640 回答
0

基于https://developer.android.com/training/basics/activity-lifecycle/recreating.html

您必须保存要返回的变量。在 onSaveInstanceState 你保存你的数据

static final String SAVE_STRING = "string_to_save";
...
@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
    // Save variable value on bundle
    savedInstanceState.putInt(SAVE_STRING, yourstring);

    // Always call the superclass so it can save the view hierarchy state
    super.onSaveInstanceState(savedInstanceState);
}

然后您可以在 onRestoreInstanceState 中检索它们

public void onRestoreInstanceState(Bundle savedInstanceState) {
    // Always call the superclass so it can restore the view hierarchy
    super.onRestoreInstanceState(savedInstanceState);

    // Restore state members from saved instance
    yourstring = savedInstanceState.getInt(SAVE_STRING);
}
于 2016-08-03T12:26:51.423 回答