Je développe une application dans laquelle les utilisateurs remplissent un formulaire avec des photos et quelques questions oui/non. Lorsque oui est sélectionné, vous devez ajouter des informations supplémentaires dans un dialogue. Ensuite, cette information est insérée dans un TextView
et ce TextView
inséré dans un LinearLayout
. Le problème est que, lorsque l'utilisateur passe à une autre application, cet écran passe en arrière-plan et est ensuite détruit par Android (car le système a besoin de mémoire). Ensuite, lorsque l'utilisateur revient à l'application, la méthode onRestoreInstanceState()
est appelée, ramenant certaines variables mais pas le TextView
à l'intérieur de LinearLayout
. J'utilise des annotations Android pour renvoyer ces variables. Comment restaurer ces vues Android?onRestoreInstanceState Ne recharge pas toutes les vues
<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");}
Désolé pour mon anglais débutant. Merci d'avance.
vous avez 'android: visibilité = "gone"' sur votre mise en page est-ce normal? –
C'est un prérequis. Chaque question ne devrait apparaître qu'après la réponse précédente. –
pouvez-vous vous assurer que votre linearLayout n'est pas restauré? (En utilisant [Hierarchy View] (https://developer.android.com/studio/profile/hierarchy-viewer.html) par exemple) –