Lorsque je tourne mon smartphone l'appli plante
rapidegoyes
Messages postés
138
Date d'inscription
Statut
Membre
Dernière intervention
-
BunoCS Messages postés 15952 Date d'inscription Statut Modérateur Dernière intervention -
BunoCS Messages postés 15952 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je code une petite appli de gestion de congélateur.
Aucune erreur ni dans build ni dans logcat.
Pourtant lorsque je mets l'affichage à l'horizontal mon appli plante.
Dès que je clique sur OK l'appli continue.
Mon code du fichier Mafiche.xml
Mon code du fichier Mafich_viande.java
Après plusieurs tests pour trouver l'erreur
voici la partie qui pose problème:
Lorsque je mets cette partie en commentaire tout redevient normal et j'obtient l'affichage horizontal
En voici l'extrait du code
Merci de bien vouloir m'aider
Très cordialement
a+++
rapidegoyes
Je code une petite appli de gestion de congélateur.
Aucune erreur ni dans build ni dans logcat.
Pourtant lorsque je mets l'affichage à l'horizontal mon appli plante.
Dès que je clique sur OK l'appli continue.
Mon code du fichier Mafiche.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/linearLayout"
android:layout_width="fill_parent"
android:layout_height="30dp"
android:layout_marginStart="1dp"
android:layout_marginLeft="1dp"
android:layout_marginTop="1dp"
android:layout_marginEnd="1dp"
android:layout_marginRight="1dp"
android:orientation="horizontal"
android:weightSum="5"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="ExtraText,MissingConstraints"> <!-- nombre de colonnes -->
<TextView
android:id="@+id/textView_type"
android:layout_width="65dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:gravity="center"
android:text="@string/types"
android:textColor="#E91E63"
android:textStyle="bold" />
<TextView
android:id="@+id/textView_nom"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:gravity="center"
android:text="@string/noms"
android:textColor="#E91E63"
android:textStyle="bold" />
<TextView
android:id="@+id/textView_etat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:gravity="center"
android:text="@string/dates"
android:textColor="#E91E63"
android:textStyle="bold" />
<TextView
android:id="@+id/textView_nombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:gravity="center"
android:text="@string/nombres"
android:textColor="#E91E63"
android:textStyle="bold" />
<TextView
android:id="@+id/textViewe_endroit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginLeft="32dp"
android:layout_marginTop="8dp"
android:layout_weight="1"
android:gravity="center"
android:text="@string/endroits"
android:textColor="#E91E63"
android:textStyle="bold" />
</LinearLayout>
<ListView
android:id="@+id/Fiche_liste"
android:layout_width="match_parent"
android:layout_height="360dp"
android:layout_marginStart="8dp"
android:layout_marginLeft="8dp"
android:layout_marginEnd="8dp"
android:layout_marginRight="8dp"
android:listSelector="#FFFF00"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/linearLayout">
</ListView>
<Spinner
android:id="@+id/spinner6"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="8dp"
android:listSelector="#FFFF00"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/textEndroit" />
<TextView
android:id="@+id/textEndroit"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="10dp"
android:text="@string/modifiez_l_endroit_et_ou_la_quantit"
android:textColor="#E91E63"
android:textSize="20sp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/Fiche_liste" />
<Spinner
android:id="@+id/spinner7"
android:layout_width="110dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="8dp"
app:layout_constraintStart_toEndOf="@+id/spinner6"
app:layout_constraintTop_toBottomOf="@+id/textEndroit" />
<Button
android:id="@+id/button4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="24dp"
android:text="@string/retour_la_liste"
android:textColor="#22427C"
android:textSize="14sp"
android:textStyle="bold"
app:layout_constraintStart_toEndOf="@+id/spinner3"
app:layout_constraintTop_toBottomOf="@+id/spinner7" />
<Spinner
android:id="@+id/spinner3"
android:layout_width="160dp"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginLeft="16dp"
android:layout_marginTop="24dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/spinner6" />
</androidx.constraintlayout.widget.ConstraintLayout>
Mon code du fichier Mafich_viande.java
package com.example.sqlitedatabase;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.view.Gravity;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleCursorAdapter;
import android.widget.Spinner;
import android.widget.Toast;
public class Mafich_viande extends Activity implements AdapterView.OnItemLongClickListener{
SQLiteDataBaseHelper db; // déclaration de l'objet db
//déclaration tableaux pour spinner3
String[] nombreChanger = {"0","1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12",
"13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24"};
String[] endroitChangement = {"Gauche-bas", "Gauche-haut", "Milieu-bas", "Milieu-haut", "Droite-bas", "Droite-haut",
"Dessus", "Compartiment", "Panier gauche", "Panier droite", "Tiroir1", "Tiroir2", "Tiroir3", "Tiroir4", "Tiroir5", "Tiroir6",
"Tiroir7", "Bac gauche", "Bac droite",};
String [] choix_congelateur = {"Cave1", "Cave2", "Cuisine1", "Cuisine2", "Garage1", "Garage2",
"Debarras1", "Debarras2"};
//déclaration variable de classe pour changer la quantité ou le nombre
public static String varChange6;
public static String varModifEndroit6;
//déclaration des objets widget
private Spinner entreNombre;
private Button retourAccueil;
private Spinner choix_Endroit;
private Spinner choix_congel;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.fiche);
db = new SQLiteDataBaseHelper(this);
final ListView lv = this.findViewById(R.id.Fiche_liste);
// récupération des différents widgets
entreNombre = (Spinner)findViewById(R.id.spinner7);
retourAccueil = (Button)findViewById(R.id.button4);
choix_Endroit = (Spinner)findViewById(R.id.spinner6);
choix_congel = (Spinner)findViewById(R.id.spinner3);
//créer le ArrayAdapter instance concernant le changement du nombre de produits
ArrayAdapter<String> adapter5 = new ArrayAdapter<>(this,R.layout.spinner_item, endroitChangement);
adapter5.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//Setting the ArrayAdapter data on the Spinner
choix_Endroit.setAdapter(adapter5);
//créer le ArrayAdapter instance concernant le changement d'endroit des produits
ArrayAdapter<String> adapter6 = new ArrayAdapter<>(this, R.layout.spinner_item, nombreChanger);
adapter6.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//Setting the ArrayAdapter data on the Spinner
entreNombre.setAdapter(adapter6);
//créer le ArrayAdapter instance concernant le changement de congélateur
ArrayAdapter<String> adapter7 = new ArrayAdapter<>(this, R.layout.spinner_item, choix_congelateur);
adapter7.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//Setting the ArrayAdapter data on the Spinner
choix_congel.setAdapter(adapter7);
//*************mise en page du toast********************
Context context = getApplicationContext();
CharSequence text = " ATTENTION MODIFIER soit la Quantité ou l'Endroit même les 2 à la fois ";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.setGravity(Gravity.TOP|Gravity.LEFT, 40, 800);
toast.show();
lv.setOnItemLongClickListener(this);//permet la modification par click sur ligne
//méthode pour revenir la à la liste de départ application
//écouteur sur le bouton
retourAccueil.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//lancement de l'activité AccueilDatabase
Intent intent;
intent = new Intent(getBaseContext(), AccueilDatabase.class); //appel de la classe
startActivity(intent); //lancement de l'appel
}
});
Cursor data = db.selection_Viande();
// création de l'objet SimpleCursorAdapter...
SimpleCursorAdapter adapter = new SimpleCursorAdapter(this, R.layout.row_item, data, new String[]
{"TYPE", "NOM", "DATE", "NOMBRE", "ENDROIT"}, new int[]{R.id.textViewCol1, R.id.textViewCol2,
R.id.textViewCol3, R.id.textViewCol4, R.id.textViewCol5});
lv.setAdapter(adapter);
} //fin de onCrerate
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, final long id) {
final AlertDialog.Builder modifAlert = new AlertDialog.Builder(this);
modifAlert.setTitle("Vous pouvez modifier la quantité ou l'endroit");
modifAlert.setMessage("ATTENTION choisir: QUANTITE ou ENDROIT !" );
modifAlert.setPositiveButton("QUANTITE", null);
modifAlert.setNegativeButton("ENDROIT", null);
modifAlert.setPositiveButton("Quantité", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
varChange6 = entreNombre.getSelectedItem().toString();//initialisation de la variable de classe
db.modif_Ligne6(id);
Toast.makeText(getApplicationContext(), "OK la quantité est modifiée", Toast.LENGTH_SHORT).show();
}
});
modifAlert.setNegativeButton("Endroit", new DialogInterface.OnClickListener()
{
@Override
public void onClick(DialogInterface dialog, int which) {
varModifEndroit6 = choix_Endroit.getSelectedItem().toString();//initialisation de la variable de classe
db.modif_Endroit6(id);
Toast.makeText(getApplicationContext(), "OK l'endroit est modifié", Toast.LENGTH_SHORT).show();
}
});
modifAlert.create().show();
return false;
}
} // fin de la classe MaFiche_viande
Après plusieurs tests pour trouver l'erreur
voici la partie qui pose problème:
Lorsque je mets cette partie en commentaire tout redevient normal et j'obtient l'affichage horizontal
En voici l'extrait du code
//créer le ArrayAdapter instance concernant le changement de congélateur
ArrayAdapter<String> adapter7 = new ArrayAdapter<>(this, R.layout.spinner_item, choix_congelateur);
adapter7.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//Setting the ArrayAdapter data on the Spinner
choix_congel.setAdapter(adapter7);
Merci de bien vouloir m'aider
Très cordialement
a+++
rapidegoyes
Configuration: Windows / Firefox 90.0
A voir également:
- Lorsque je tourne mon smartphone l'appli plante
- Smartphone - Accueil - Protection
- Voici comment relier sans fil votre smartphone à votre PC pour transférer des photos (et bien plus encore) - Guide
- Appli miroir - Guide
- Comment desinstaller une appli sur pc - Guide
- Marques smartphone à éviter - Accueil - Guide téléphones
1 réponse
Hello (ça faisait longtemp ;)),
Le crash au changement d'orientation, c'est une erreur assez "commune"...
Il faut que tu sauvegarde l'état de ton écran/données via la SavedInstance.
https://developer.android.com/guide/topics/resources/runtime-changes
Le crash au changement d'orientation, c'est une erreur assez "commune"...
Il faut que tu sauvegarde l'état de ton écran/données via la SavedInstance.
https://developer.android.com/guide/topics/resources/runtime-changes