2010-11-22 3 views
1

Je ne fais que commencer le développement Android, et j'ai rencontré des problèmes avec lesquels mon manuel ne m'aide pas.Pourquoi mon application Android plante-t-elle sur l'insertion de ligne?

Ceci est ma fonction d'insertion: public long insertEntry (élément BudgetsItem) { assert item.id == -1;

ContentValues newBudgetValues = new ContentValues(); 
    newBudgetValues.put("name", item.name); 
    newBudgetValues.put("balance", item.balance); 

    item.id = db.insert(DATABASE_TABLE_NAME, null, newBudgetValues); 

    return item.id; 
} 

C'est ma définition de la table:

private static final String TABLE_CREATE = "CREATE " + DATABASE_TABLE_NAME + "(\n" + 
    "id INTEGER PRIMARY KEY AUTOINCREMENT, \n" + 
    "name TEXT, \n" + 
    "balance DOUBLE);"; 

Et voici ce qui appelle l'adaptateur avant qu'il ne tombe en panne:

 BudgetsAdapter adapter = new BudgetsAdapter(getBaseContext()); 
     BudgetsItem newBudget = new BudgetsItem(budgetName, balance); 
     if(adapter.insertEntry(newBudget) != -1){ 
      Toast.makeText(getApplicationContext(), "Budget Created!", Toast.LENGTH_SHORT); 
      finish(); 
     }else{ 
      Toast.makeText(getApplicationContext(), "Oops, something failed.", Toast.LENGTH_SHORT); 
     } 

Il tombe en panne sur la ligne de db.insert avec un NullPointerException . Quelqu'un peut-il me dire pourquoi?

Répondre

1

Votre ne nous donner aucune information sur vous Db objet (je suppose que représente votre base de données.

depuis que vous avez dit, il se bloque sur insert db je dois deviner que db n'est pas initialisé au moment que vous faites un insert Je suggérerais 1) en ajoutant un if (db! = Null)

si la dernière ligne de votre journal de plantage est effectivement sur le db.insert.

s'il y a plus de lignes s'il vous plaît ajouter votre pile à votre message afin que nous puissions aider

+0

Vous avez raison, DB est assigné lorsque adaptateur.open est appelé, et j'ai oublié de l'appeler. – Malfist

1

Dans ce cas, il y a juste une chose qui peut être nulle: db. Êtes-vous sûr de les initialiser?

Questions connexes