Nesquick Posté(e) 20 avril 2012 Share Posté(e) 20 avril 2012 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 : 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; } } Ma base de donnée : 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); } } "Bout" de ma gestion de base de donnée qui bug : 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); } 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. 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 : 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(); } } 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à . Merci pour tous ceux qui ont lu tout le poste :) et qui sont prêts à m'aider. Lien vers le commentaire Partager sur d’autres sites More sharing options...
Nesquick Posté(e) 21 avril 2012 Auteur Share Posté(e) 21 avril 2012 Toujours personne de motivés pour répondre aujourd'hui ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
dr.brahim Posté(e) 23 avril 2012 Share Posté(e) 23 avril 2012 bonjour moi aussi je suis un débutant dan la programmation andoird mon remarque c'est ta déclarer les champs du tableau table_recette NOT NULL alors je crois qu'il vaut insérer tous les champs pas seulement le titre et catégorie Lien vers le commentaire Partager sur d’autres sites More sharing options...
oqs Posté(e) 25 avril 2012 Share Posté(e) 25 avril 2012 oui, il te manque COL_TPSPREP et COL_TPSCUISS à ta ContentValues que tu inseres Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.