Bonjour,
Débutant en programmation Android je dois faire une application pour mes études
L'application est une liste de recette sur laquelle on doit pouvoir effectuer plusieurs actions.
J'ai un problème lorsque je veux insérer une table dans ma liste de recette via un menu
Code du menu :
Ma base de donnée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 public class MenuActivity extends Activity { GestionBDD recetteBdd = new GestionBDD(this); Context monContext = this; String categorie =""; public boolean onCreateOptionsMenu(Menu menu) { MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.options_menu, menu); return true; } public boolean onOptionsItemSelected(MenuItem item) { this.setContentView(R.layout.ajout_recette); Button btEnregRecette = (Button) findViewById(R.id.button); final TextView titre = (TextView) findViewById(R.id.champTitre); btEnregRecette.setOnClickListener(new Button.OnClickListener() { public void onClick(View v) { final TextView titre = (TextView) findViewById(R.id.champTitre); RadioGroup radiogroup = (RadioGroup) findViewById(R.id.groupeBouton); int boutonRadioCoche = radiogroup.getCheckedRadioButtonId(); switch(boutonRadioCoche) { case R.id.btnEntree : categorie = "Entrée"; case R.id.btnPlat : categorie = "Plat"; case R.id.btnDessert : categorie = "Dessert"; } recetteBdd.open(); Recette recette = new Recette(titre.getText().toString(),categorie); recetteBdd.insertRecette(recette); Intent monIntent= new Intent(monContext,CookingRawActivity.class); startActivity(monIntent); recetteBdd.close(); } }); return true; } }
"Bout" de ma gestion de base de donnée qui bug :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 public class MaBase extends SQLiteOpenHelper { public static final String MABDD_NAME = "MaBDD.db"; public static final int MABDD_VERSION = 1; public static final String TABLE_RECETTE ="table_recette"; public static final String COL_ID = "ID"; public static final String COL_TITRE = "TITRE"; public static final String COL_CATEGORIE = "CATEGORIE"; public static final String COL_TPSPREP = "TPSPREP"; public static final String COL_TPSCUISS = "TPSCUISS"; private static final String CREATE_BDD = "CREATE TABLE "+ TABLE_RECETTE + " (" + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_TITRE+ " TEXT NOT NULL," + COL_CATEGORIE +" TEXT NOT NULL," +COL_TPSPREP + " INTEGER NOT NULL," +COL_TPSCUISS + " INTEGER NOT NULL);"; public MaBase (Context context) { super(context,MABDD_NAME,null,MABDD_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_BDD); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE "+TABLE_RECETTE+";"); onCreate(db); } }
En utilisant le debug je me suis rendu compte que ma variable insertId me renvoyer comme valeur -1 d'où le fait que je ne puisse pas insérer dans ma liste.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 public class GestionBDD { //Les variables private SQLiteDatabase bdd; private MaBase maBase; private String[] colonnes = { MaBase.COL_ID, MaBase.COL_TITRE, MaBase.COL_CATEGORIE }; //Méthode d'insertion de recette public Recette insertRecette(Recette recette) { ContentValues values = new ContentValues(); values.put(MaBase.COL_TITRE, recette.getTitre()); values.put(MaBase.COL_CATEGORIE, recette.getCategorie()); long insertId = bdd.insert(MaBase.TABLE_RECETTE, null, values); Cursor cursor = bdd.query(MaBase.TABLE_RECETTE, colonnes, MaBase.COL_ID + " = " + insertId, null, null, null, null); cursor.moveToFirst(); return cursorToRecette(cursor); }
Donc voilà je cherche quelqu'un pouvait m'expliquer pourquoi cette variable me renvoi -1.
Pour ceux qui veulent le code de la classe principale :
Petite précision : mon code marché avant que j'utilise la remise à 0 que j'ai mis en commentaire (je pense que le problème vient de là .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 public class CookingRawActivity extends MenuActivity implements AdapterView.OnItemClickListener{ /** Called when the activity is first created. */ GestionBDD recetteBdd = new GestionBDD(this); //MaBase mabase= new MaBase(this); public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); recetteBdd.open();// ouverture de la base de donnée //mabase.onCreate(recetteBdd.getBDD()); //REMISE A 0 de la base. this.setContentView(R.layout.liste_recette);// ouverture de ma page xml ListView mPhotosList = (ListView) findViewById(android.R.id.list); final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1,recetteBdd.renvoiListeRecette()); mPhotosList.setAdapter(adapter); mPhotosList.setOnItemClickListener(this); recetteBdd.close();//fermeture de ma base } public void onItemClick(AdapterView parent, View v, int position, long id) { setContentView(R.layout.recette_info);//on appelle notre xml final TextView nomrecette = (TextView) findViewById(R.id.nomRecette); final TextView larecette = (TextView) findViewById(R.id.nomCategorie); recetteBdd.open(); long idRecette = id; String[] aTableauInfoRecette = recetteBdd.infoRecette(idRecette); nomrecette.setText(aTableauInfoRecette[0]);//affichage du nom de la recette larecette.setText(aTableauInfoRecette[1]);// affichage de la recette recetteBdd.close(); } }
Merci pour tous ceux qui ont lu tout le poste et qui sont prêts à m'aider.
Partager