L'application de base de données Android ne répond pas

Je fais une application pour stocker des valeurs de champ de texte à la base de données. Après avoir entré des valeurs quand j'appuie sur le bouton pour le soumettre, il a juste pendu et n'a donné aucune réponse.

mon code onCreate est donné ci-dessous:

public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final DBAdapter db = new DBAdapter(this);

      //---add 2 titles---
        db.open();
        final long d_id ;  
        final EditText input1 = (EditText) findViewById(R.id.isbn);
        final String   isbn   = input1.getText().toString();

        final EditText input2 = (EditText) findViewById(R.id.titleText);
        final String   tText   = input2.getText().toString();

        final EditText input3 = (EditText) findViewById(R.id.publisherText);
        final String   pText   = input3.getText().toString();

        this.btn = (Button)this.findViewById(R.id.button1);
        this.btn.setOnClickListener(new OnClickListener()
        {

            @Override
            public void onClick(View v) {
                db.insertTitle(isbn, tText, pText);

            }
        });

         db.close();
    }

}

isbn, titleText et publisherText sont mes id pour Textfield. insertTitle est une fonction permettant d'insérer les valeurs.

Qu'est ce qui ne va pas avec mon code?

Merci.

0
Placez le db.open et db.close dans onClick lui-même (avant et après l'insertTitle).
ajouté l'auteur Urban, source

3 Réponses

essaye ça

    this.btn = (Button)this.findViewById(R.id.button1);
    this.btn.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View v) {
final EditText input1 = (EditText) findViewById(R.id.isbn);
    final String   isbn   = input1.getText().toString();

    final EditText input2 = (EditText) findViewById(R.id.titleText);
    final String   tText   = input2.getText().toString();

    final EditText input3 = (EditText) findViewById(R.id.publisherText);
    final String   pText   = input3.getText().toString();

            db.insertTitle(isbn, tText, pText);

        }
    });
0
ajouté

Vous lisez les valeurs de vos champs de texte lorsque l'application est en cours de création, et non lorsque le bouton est enfoncé. Vous saisissez toujours les valeurs initiales de vos EditTexts avec votre code actuel. Essaye ça:

db.insertTitle(input1.getText().toString(), input2.getText().toString(), input3.getText().toString());

Vous devrez vous déplacer là où vous fermez votre base de données, sinon vous obtiendrez une erreur pour tenter d'accéder à une base de données fermée. Essayez de le mettre dans onPause() ou onDestroy ().

Si ce n'est pas la solution, publiez vos erreurs logcat , afin que nous n'ayons pas à deviner ce qui se passe.

0
ajouté
merci ça a marché! :)
ajouté l'auteur user1370786, source

Je pense que votre problème est open() et close() ils sont dans la méthode onclick ou votre insertTitle() méthode Vérifiez vos valeurs et vos types.

    ContentValues cv = new ContentValues();
    cv.put(KEY_WORK_OUT, workout);
    cv.put(KEY_NAME, name);
    cv.put(KEY_REP,rep);
    cv.put(KEY_WEIGHT, weight);

    ourDataBase.insert(DATABASE_TABLE, null, cv);
0
ajouté