mirror of
https://github.com/LucasVbr/OutilCuisson.git
synced 2026-05-13 17:11:53 +00:00
Ajout Cuisson, action Annuler, Valider
Ajout de la classe Cuisson (Sérialisable) // Classe AjouterFragment - Definition des valeurs par défaut du time picker - Ajout des actions Annuler et Valider (avec des tests qui creer un nouvel objet qui est stocké dans la liste de AfficherFragment) // Classe Afficher Fragment Ajout d'une arraylist qui contiens les cuissons Ajout de deux fonctions pour charger et sauvegarder les cuissons dans un fichier (ne fonctionne pas encore, a faire)
This commit is contained in:
@@ -13,9 +13,67 @@ import android.view.ViewGroup;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class AfficherFragment extends Fragment {
|
||||
|
||||
public AfficherFragment() {}
|
||||
/**
|
||||
* Liste des cuissons enregistré dans l'application
|
||||
*/
|
||||
public static ArrayList<Cuisson> listeCuisson = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Ajouter une cuisson
|
||||
*
|
||||
* @param cuisson La cuisson à ajouter
|
||||
*/
|
||||
public static void addCuisson(Cuisson cuisson) {
|
||||
listeCuisson.add(cuisson);
|
||||
updateSaveFile();
|
||||
}
|
||||
|
||||
/**
|
||||
* Met a jour le fichier dataCuisson.txt qui sauvegarde la liste des cuissons
|
||||
*/
|
||||
private static void updateSaveFile() {
|
||||
// TODO Il faut creer un fichier cuisson.txt si il n'existe pas
|
||||
|
||||
// try {
|
||||
// FileOutputStream fos = new FileOutputStream("dataCuisson.txt", false);
|
||||
// ObjectOutputStream oos = new ObjectOutputStream(fos);
|
||||
// oos.writeObject(listeCuisson);
|
||||
// oos.close();
|
||||
// fos.close();
|
||||
// } catch (IOException ioe) {
|
||||
// ioe.printStackTrace();
|
||||
// }
|
||||
}
|
||||
|
||||
/**
|
||||
* Charge la liste des cuissons contenue dans le fichier dataCuisson.txt
|
||||
*/
|
||||
private static void loadSaveFile() {
|
||||
// TODO à décommenter lorsque updateSaveFile() sera terminé
|
||||
|
||||
// try {
|
||||
// FileInputStream fis = new FileInputStream("dataCuisson.txt");
|
||||
// ObjectInputStream ois = new ObjectInputStream(fis);
|
||||
//
|
||||
// listeCuisson = (ArrayList) ois.readObject();
|
||||
//
|
||||
// ois.close();
|
||||
// fis.close();
|
||||
// } catch (FileNotFoundException ignored) {
|
||||
// } catch (IOException ioe) {
|
||||
// ioe.printStackTrace();
|
||||
// } catch (ClassNotFoundException c) {
|
||||
// System.out.println("Class not found");
|
||||
// c.printStackTrace();
|
||||
// }
|
||||
}
|
||||
|
||||
public AfficherFragment() {
|
||||
}
|
||||
|
||||
public static AfficherFragment newInstance() {
|
||||
return new AfficherFragment();
|
||||
@@ -29,6 +87,7 @@ public class AfficherFragment extends Fragment {
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container,
|
||||
Bundle savedInstanceState) {
|
||||
loadSaveFile();
|
||||
return inflater.inflate(R.layout.afficher_fragment, container, false);
|
||||
}
|
||||
|
||||
|
||||
@@ -10,16 +10,21 @@ import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.TimePicker;
|
||||
|
||||
import androidx.fragment.app.Fragment;
|
||||
|
||||
import com.exercice.onglet.outilcuisson2021.OutilCuisson;
|
||||
|
||||
public class AjouterFragment extends Fragment {
|
||||
|
||||
EditText inputPlat;
|
||||
TimePicker inputDuree;
|
||||
EditText inputTemperature;
|
||||
Button btnEffacer;
|
||||
Button btnValider;
|
||||
|
||||
public AjouterFragment() {
|
||||
}
|
||||
@@ -38,16 +43,57 @@ public class AjouterFragment extends Fragment {
|
||||
Bundle savedInstanceState) {
|
||||
View view = inflater.inflate(R.layout.ajouter_fragment, container, false);
|
||||
|
||||
/* Liste des éléments intéractifs */
|
||||
inputPlat = view.findViewById(R.id.input_plat);
|
||||
inputDuree = view.findViewById(R.id.input_duree);
|
||||
inputTemperature = view.findViewById(R.id.input_temperature);
|
||||
btnEffacer = view.findViewById(R.id.btn_effacer);
|
||||
btnValider = view.findViewById(R.id.btn_valider);
|
||||
|
||||
/* Initialise le TimePicker en format 24h avec par défaut la valeur 0h40 */
|
||||
inputDuree.setIs24HourView(true);
|
||||
inputDuree.setHour(0);
|
||||
inputDuree.setMinute(40);
|
||||
|
||||
/*
|
||||
* Action de création de la nouvelle cuisson
|
||||
*/
|
||||
btnValider.setOnClickListener(view1 -> {
|
||||
/* Récupère toutes les valeurs des champs */
|
||||
String txtPlat = inputPlat.getText().toString();
|
||||
String txtTemperature = inputTemperature.getText().toString();
|
||||
int hDuree = inputDuree.getHour();
|
||||
int mDuree = inputDuree.getMinute();
|
||||
|
||||
/* Convertis la température en entier */
|
||||
int temperature = txtTemperature.isEmpty() ? -1 : Integer.parseInt(txtTemperature);
|
||||
|
||||
/* Cas ou les valeurs ne sont pas valides */
|
||||
if (!OutilCuisson.platValide(txtPlat)
|
||||
|| !OutilCuisson.heureCuissonValide(hDuree)
|
||||
|| !OutilCuisson.minuteCuissonValide(mDuree)
|
||||
|| !OutilCuisson.temperatureValide(temperature)) {
|
||||
|
||||
System.out.println("Erreur");
|
||||
|
||||
}
|
||||
|
||||
/* Cas ou les valeurs sont valides : on ajoute une nouvelle cuisson dans la liste a afficher */
|
||||
AfficherFragment.addCuisson(new Cuisson(txtPlat, hDuree, mDuree, temperature));
|
||||
});
|
||||
|
||||
/*
|
||||
* Efface le contenu des champs de textes et met le TimePicker à 0h40
|
||||
*/
|
||||
btnEffacer.setOnClickListener(view2 -> {
|
||||
|
||||
inputPlat.setText("");
|
||||
inputDuree.setHour(0);
|
||||
inputDuree.setMinute(40);
|
||||
inputTemperature.setText("");
|
||||
});
|
||||
|
||||
return view;
|
||||
}
|
||||
|
||||
public void actionBtnEffacer(View view) {
|
||||
}
|
||||
|
||||
public void actionBtnAjouter(View view) {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.example.outilcuisson;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
public class Cuisson implements Serializable {
|
||||
|
||||
private String plat;
|
||||
private int heure;
|
||||
private int minute;
|
||||
private int degree;
|
||||
|
||||
public Cuisson(String plat, int heure, int minute, int degree) {
|
||||
this.plat = plat;
|
||||
this.heure = heure;
|
||||
this.minute = minute;
|
||||
this.degree = degree;
|
||||
}
|
||||
|
||||
public String getPlat() {
|
||||
return plat;
|
||||
}
|
||||
|
||||
public int getHeure() {
|
||||
return heure;
|
||||
}
|
||||
|
||||
public int getMinute() {
|
||||
return minute;
|
||||
}
|
||||
|
||||
public int getDegree() {
|
||||
return degree;
|
||||
}
|
||||
}
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
|
||||
/*
|
||||
* Classe avec des méthodes outils pour gérer une chaîne de caractères contenant
|
||||
* Classe avec des méthodes outils pour gérer une chaîne de caractères contenant
|
||||
* les caractéristiques d'une cuisson au four
|
||||
* OutilCuisson.java 12/21
|
||||
*/
|
||||
@@ -24,19 +24,18 @@ package com.exercice.onglet.outilcuisson2021;
|
||||
* Cette classe est une classe utilitaire qui contient des méthodes outils pour gérer
|
||||
* une chaîne de caractères contenant le descriptif d'une cuisson au four.
|
||||
* Les caractéristiques d'une cuisson sont :
|
||||
* - le nom du plat (une chaîne non vide)
|
||||
* - les heures de la durée de la cuisson (un entier entre 0 et 9)
|
||||
* - les minutes de la durée de la cuisson (un entier entre O et 50)
|
||||
* - une température (un entier strictement positif et inférieur à TEMPERATURE_MAX)
|
||||
*
|
||||
*
|
||||
* @author INFO2 Semestre 4
|
||||
* - le nom du plat (une chaîne non vide)
|
||||
* - les heures de la durée de la cuisson (un entier entre 0 et 9)
|
||||
* - les minutes de la durée de la cuisson (un entier entre O et 50)
|
||||
* - une température (un entier strictement positif et inférieur à TEMPERATURE_MAX)
|
||||
*
|
||||
* @author INFO2 Semestre 4
|
||||
*/
|
||||
public class OutilCuisson {
|
||||
|
||||
/** Valeur de la chaîne qui représente une cuisson si l'une des caractéristiques
|
||||
* de la cuisson est invalide
|
||||
|
||||
/**
|
||||
* Valeur de la chaîne qui représente une cuisson si l'une des caractéristiques
|
||||
* de la cuisson est invalide
|
||||
*/
|
||||
private static final String CHAINE_DEFAUT = "Information incohérente";
|
||||
|
||||
@@ -46,83 +45,90 @@ public class OutilCuisson {
|
||||
public static final int TEMPERATURE_MAX = 300;
|
||||
|
||||
|
||||
/** Valeur maximale pour le nombre d'heures d'une cuisson */
|
||||
/**
|
||||
* Valeur maximale pour le nombre d'heures d'une cuisson
|
||||
*/
|
||||
public static final int HEURE_MAX = 9;
|
||||
|
||||
/**
|
||||
* Nombre maximum de caractères pour le nom du plat
|
||||
*/
|
||||
private static final int LG_MAX_PLAT = 18;
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Détermine si un nom de plat est valide (non vide, au plus 20 caractères et ne
|
||||
* contient pas le caractère '|')
|
||||
* @param nomPlat chaîne à testesr
|
||||
* @return un booléen égal à vrai ssi la chaîne à tester est valide
|
||||
*
|
||||
* @param nomPlat chaîne à testesr
|
||||
* @return un booléen égal à vrai ssi la chaîne à tester est valide
|
||||
*/
|
||||
public static boolean platValide(String nomPlat) {
|
||||
return nomPlat.length() > 0 && nomPlat.length() <= LG_MAX_PLAT
|
||||
&& ! nomPlat.contains("|");
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Détermine si le nombre d'heures d'une durée de cuisson est valide
|
||||
* (comprise entre 0 et 9)
|
||||
* @param heureCuisson heure à tester
|
||||
* @return un booléen égal à vrai ssi l'heure de la durée est valide
|
||||
*/
|
||||
public static boolean heureCuissonValide(int heureCuisson) {
|
||||
return heureCuisson >= 0 && heureCuisson <= HEURE_MAX;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Détermine si le nombre de minutes d'une durée de cuisson est valide
|
||||
* (comprise entre 0 et 59)
|
||||
* @param minuteCuisson minute à tester
|
||||
* @return un booléen égal à vrai ssi le nombre de minutes de la durée est valide
|
||||
*/
|
||||
public static boolean minuteCuissonValide(int minuteCuisson) {
|
||||
return minuteCuisson >= 0 && minuteCuisson <= 59;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Détermine si une température de cuisson est valide
|
||||
* (strictement positive et inférieure ou égale à TEMPERATURE_MAX)
|
||||
* @param temperature temperature à tester
|
||||
* @return un booléen égal à vrai ssi la température est valide
|
||||
*/
|
||||
public static boolean temperatureValide(int temperature) {
|
||||
return temperature > 0 && temperature <= TEMPERATURE_MAX;
|
||||
&& !nomPlat.contains("|");
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Détermine si le nombre d'heures d'une durée de cuisson est valide
|
||||
* (comprise entre 0 et 9)
|
||||
*
|
||||
* @param heureCuisson heure à tester
|
||||
* @return un booléen égal à vrai ssi l'heure de la durée est valide
|
||||
*/
|
||||
public static boolean heureCuissonValide(int heureCuisson) {
|
||||
return 0 <= heureCuisson && heureCuisson <= HEURE_MAX;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Détermine si le nombre de minutes d'une durée de cuisson est valide
|
||||
* (comprise entre 0 et 59)
|
||||
*
|
||||
* @param minuteCuisson minute à tester
|
||||
* @return un booléen égal à vrai ssi le nombre de minutes de la durée est valide
|
||||
*/
|
||||
public static boolean minuteCuissonValide(int minuteCuisson) {
|
||||
return 0 <= minuteCuisson && minuteCuisson <= 59;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Détermine si une température de cuisson est valide
|
||||
* (strictement positive et inférieure ou égale à TEMPERATURE_MAX)
|
||||
*
|
||||
* @param temperature temperature à tester
|
||||
* @return un booléen égal à vrai ssi la température est valide
|
||||
*/
|
||||
public static boolean temperatureValide(int temperature) {
|
||||
return 0 < temperature && temperature <= TEMPERATURE_MAX;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Concatène les arguments dans une chaîne de caractères. Celle-ci aura le format
|
||||
* suivant :
|
||||
* nom du plat | temps de cuisson en heures et minutes | température
|
||||
* suivant :
|
||||
* nom du plat | temps de cuisson en heures et minutes | température
|
||||
* Si l'un des arguments est invalide, c'est la constante CHAINE_DEFAUT qui
|
||||
* est renvoyée
|
||||
* @param nomPlat nom du plat. Doit être non vide, avec au plus
|
||||
* LG_MAX_PLAT caractères, ne doit pas contenir |
|
||||
* @param heureCuisson nombre d'heures de la durée de la cuisson
|
||||
* doit être compris entre 0 et 9
|
||||
* @param minuteCuisson nombre de minutes de la durée de la cuisson
|
||||
* doit être compris entre 0 et 59
|
||||
* @param temperature température de la cuisson. Doit être comprise entre
|
||||
* 1 et TEMPERATURE_MAX
|
||||
*
|
||||
* @param nomPlat nom du plat. Doit être non vide, avec au plus
|
||||
* LG_MAX_PLAT caractères, ne doit pas contenir |
|
||||
* @param heureCuisson nombre d'heures de la durée de la cuisson
|
||||
* doit être compris entre 0 et 9
|
||||
* @param minuteCuisson nombre de minutes de la durée de la cuisson
|
||||
* doit être compris entre 0 et 59
|
||||
* @param temperature température de la cuisson. Doit être comprise entre
|
||||
* 1 et TEMPERATURE_MAX
|
||||
* @return une chaîne contenant le descriptif de la cuisson si les paramètres
|
||||
* sont valides. Sinon la chaîne CHAINE_DEFAUT
|
||||
* sont valides. Sinon la chaîne CHAINE_DEFAUT
|
||||
*/
|
||||
public static String transformeEnChaine(String nomPlat, int heureCuisson,
|
||||
int minuteCuisson, int temperature) {
|
||||
StringBuilder aRenvoyer = new StringBuilder();
|
||||
|
||||
if (platValide(nomPlat) && heureCuissonValide(heureCuisson)
|
||||
&& minuteCuissonValide(minuteCuisson) && temperatureValide(temperature)) {
|
||||
|
||||
if (platValide(nomPlat) && heureCuissonValide(heureCuisson)
|
||||
&& minuteCuissonValide(minuteCuisson) && temperatureValide(temperature)) {
|
||||
|
||||
// on insère le nom du plat
|
||||
aRenvoyer.append(nomPlat);
|
||||
@@ -141,21 +147,22 @@ public class OutilCuisson {
|
||||
// on insère la température
|
||||
aRenvoyer.append(String.format("%3d", temperature));
|
||||
} else {
|
||||
|
||||
|
||||
// l'un des arguments est invalide
|
||||
aRenvoyer.append(CHAINE_DEFAUT);
|
||||
}
|
||||
}
|
||||
return aRenvoyer.toString();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Extrait d'une chaîne le nom du plat. On suppose que la chaîne est correctement
|
||||
* formatée dans le format de la description d'une cuisson gérée par cette classe
|
||||
* (les 20 premiers caractères de la chaîne sont extraits)
|
||||
* @param source chaîne source de l'extraction
|
||||
* @return une chaîne contenant le nom du plat ou CHAINE_DEFAUT si la chaîne
|
||||
* argument est trop courte
|
||||
*
|
||||
* @param source chaîne source de l'extraction
|
||||
* @return une chaîne contenant le nom du plat ou CHAINE_DEFAUT si la chaîne
|
||||
* argument est trop courte
|
||||
*/
|
||||
public static String extrairePlat(String source) {
|
||||
if (source.length() < LG_MAX_PLAT) {
|
||||
@@ -164,42 +171,44 @@ public class OutilCuisson {
|
||||
return source.substring(0, LG_MAX_PLAT);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Extrait d'une chaîne la température de cuisson. On suppose que la chaîne
|
||||
* est correctement formatée dans le format de la description d'une cuisson
|
||||
* Extrait d'une chaîne la température de cuisson. On suppose que la chaîne
|
||||
* est correctement formatée dans le format de la description d'une cuisson
|
||||
* gérée par cette classe (la température est présente sur les 3 derniers
|
||||
* caractères de la chaîne)
|
||||
* @param source chaîne source de l'extraction
|
||||
* @return un entier égal à la température extraite ou bien -1 si un
|
||||
* problème inattendu a été rencontré avec le format de la chaîne
|
||||
*
|
||||
* @param source chaîne source de l'extraction
|
||||
* @return un entier égal à la température extraite ou bien -1 si un
|
||||
* problème inattendu a été rencontré avec le format de la chaîne
|
||||
*/
|
||||
public static int extraireTemperature(String source) {
|
||||
int temperature; // température extraite
|
||||
String chaineTemperature; // température extraite en tant que chaîne
|
||||
|
||||
|
||||
|
||||
|
||||
try {
|
||||
chaineTemperature = source.substring(source.length() - 3, source.length());
|
||||
temperature = Integer.parseInt(chaineTemperature);
|
||||
} catch(NumberFormatException | IndexOutOfBoundsException erreur) {
|
||||
|
||||
} catch (NumberFormatException | IndexOutOfBoundsException erreur) {
|
||||
|
||||
/*
|
||||
* erreur lors de l'extraction des 3 derniers caractère
|
||||
* erreur lors de l'extraction des 3 derniers caractère
|
||||
* ou lors de la transformation en entier
|
||||
*/
|
||||
temperature = -1;
|
||||
}
|
||||
}
|
||||
return temperature;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Renvoie le thermostat correspondant à la temperature arguemnt
|
||||
* (celle-ci doit être inférieure à TEMPERATURE_MAX)
|
||||
* @param temperature température à convertir
|
||||
* @return l'entier égal au thermostat ou -1 si la température est invalide
|
||||
*
|
||||
* @param temperature température à convertir
|
||||
* @return l'entier égal au thermostat ou -1 si la température est invalide
|
||||
*/
|
||||
public static int thermostat(int temperature) {
|
||||
int aRenvoyer; // valeur du thermostat à renvoyer
|
||||
@@ -213,13 +222,14 @@ public class OutilCuisson {
|
||||
}
|
||||
return aRenvoyer;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Renvoie une chaîne constituée d'espaces. Le nombre d'espaces est indiqué
|
||||
* par le paramètre.
|
||||
* @param nbEspace nombre d'espaces à placer dans la chaîne
|
||||
* @return une chaîne constituée du caractère espace
|
||||
*
|
||||
* @param nbEspace nombre d'espaces à placer dans la chaîne
|
||||
* @return une chaîne constituée du caractère espace
|
||||
*/
|
||||
private static String chaineEspace(int nbEspace) {
|
||||
StringBuilder aRenvoyer = new StringBuilder();
|
||||
|
||||
@@ -1,76 +1,76 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:stretchColumns="1">
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:stretchColumns="1">
|
||||
|
||||
<!-- Titre -->
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:text="@string/ajouter_titre"/>
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:text="@string/ajouter_titre" />
|
||||
|
||||
<TableRow> <!-- Plat -->
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_plat" />
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_plat" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/input_plat"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:inputType="text"
|
||||
android:maxLines="1"
|
||||
android:maxLength="20"
|
||||
android:layout_span="2"/>
|
||||
android:id="@+id/input_plat"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_span="2"
|
||||
android:inputType="text"
|
||||
android:maxLength="20"
|
||||
android:maxLines="1" />
|
||||
</TableRow>
|
||||
|
||||
<!-- Durée de cuisson -->
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_duree" />
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_duree" />
|
||||
|
||||
<TimePicker
|
||||
android:id="@+id/input_duree"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:timePickerMode="spinner" />
|
||||
android:id="@+id/input_duree"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:timePickerMode="spinner" />
|
||||
|
||||
<TableRow> <!-- Température -->
|
||||
|
||||
<TextView
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_temperature" />
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/label_temperature" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/input_temperature"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_column="3"
|
||||
android:inputType="number" />
|
||||
android:id="@+id/input_temperature"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_column="3"
|
||||
android:inputType="number"/>
|
||||
|
||||
</TableRow>
|
||||
|
||||
<TableRow> <!-- Buttons -->
|
||||
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/btn_effacer"
|
||||
android:layout_column="2"
|
||||
android:onClick="actionBtnEffacer"
|
||||
style="?android:attr/buttonBarButtonStyle" />
|
||||
android:id="@+id/btn_effacer"
|
||||
style="?android:attr/buttonBarButtonStyle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_column="2"
|
||||
android:text="@string/btn_effacer"/>
|
||||
|
||||
<Button
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/btn_valider"
|
||||
android:onClick="actionBtnAjouter" />
|
||||
android:id="@+id/btn_valider"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/btn_valider" />
|
||||
|
||||
</TableRow>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user