Ich entwickle eine Anwendung, wo Benutzer ein Formular mit Fotos und ein paar Ja/Nein-Fragen ausfüllen. Wenn Ja ausgewählt ist, müssen Sie zusätzliche Informationen in einem Dialog hinzufügen. Dann wird diese Information in eine TextView
eingefügt und diese TextView
in eine LinearLayout
eingefügt.onRestoreInstanceState Nicht alle Ansichten neu laden
Das Problem ist, wenn der Benutzer zu einer anderen Anwendung wechselt dieser Bildschirm in den Hintergrund und wird später von Android zerstört (weil das System Speicher benötigt). Wenn dann der Benutzer zu der Anwendung zurückkehrt, wird die onRestoreInstanceState()
-Methode aufgerufen, die einige Variablen, aber nicht die TextView
innerhalb LinearLayout
zurückbringt. Ich verwende Android-Annotationen, um diese Variablen zurückzugeben. Wie stelle ich diese Android-Ansichten wieder her?
<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");}
Sorry für meine Anfänger Englisch. Vielen Dank im Voraus.
Sie haben 'android: Sichtbarkeit = "weg"' auf der Anlage ist das normal? –
Es ist eine Voraussetzung. Jede Frage sollte erst erscheinen, nachdem die vorherige beantwortet wurde. –
können Sie sicherstellen, dass Ihr linearLayout nicht wiederhergestellt wird (z. B. mithilfe von [Hierarchieansicht] (https://developer.android.com/studio/profile/hierarchy-viewer.html)) –