Nesquick Posted April 20, 2012 Share Posted April 20, 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. Link to comment Share on other sites More sharing options...
Nesquick Posted April 21, 2012 Author Share Posted April 21, 2012 Toujours personne de motivés pour répondre aujourd'hui ? Link to comment Share on other sites More sharing options...
dr.brahim Posted April 23, 2012 Share Posted April 23, 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 Link to comment Share on other sites More sharing options...
oqs Posted April 25, 2012 Share Posted April 25, 2012 oui, il te manque COL_TPSPREP et COL_TPSCUISS à ta ContentValues que tu inseres Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.