0

テキストフィールドの値をデータベースに保存するアプリケーションを作成しています。ボタンを押して送信するときに値を入力した後、ハングして応答がありません。

私の onCreate コードを以下に示します。

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、および publisherText は、Textfield の ID です。insertTitle は値を挿入する関数です。

私のコードの何が問題なのですか?

ありがとう。

4

3 に答える 3

1

ボタンが押されたときではなく、アプリが作成されているときにテキスト フィールドの値を読み取っています。現在のコードで常に EditTexts の初期値を入力します。これを試して:

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

データベースを閉じる場所に移動する必要があります。そうしないと、閉じたデータベースにアクセスしようとするとエラーが発生します。onPause() または onDestroy() に入れてみてください。

これが解決策でない場合は、何が起こっているのかを推測する必要がないように、logcat エラーを投稿してください。

于 2012-05-24T07:29:07.773 に答える
0

あなたの問題はあなたopen() の方法close()にある、onclick methodまたはあなたのinsertTitle()方法についてだと思います。値と型を確認してください。

    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);
于 2012-05-24T07:32:02.197 に答える
0

これを試して

    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);

        }
    });
于 2012-05-24T07:30:36.370 に答える