Android数据库应用程序未响应

我正在创建一个应用程序来将文本字段的值存储到数据库。输入值后,当我按下按钮提交时,它只是挂起而没有回应。

我的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是插入值的函数。

我的代码有什么问题?

谢谢。

0
额外 编辑
意见: 1
在onClick本身内(在insertTitle之前和之后)放置 db.opendb.close
额外 作者 Urban,

3 答案

尝试这个

    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
额外

您正在创建应用程序时正在读取文本字段的值,而不是当按钮被按下时。您将始终使用当前代码输入EditText的初始值。尝试这个:

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

您必须移动关闭数据库的位置,否则尝试访问已关闭的数据库时会出错。尝试将它放在onPause()或onDestroy()中。

如果这不是解决方案,请发布您的logcat错误,所以我们不必猜测发生了什么。

0
额外
感谢它的工作!:)
额外 作者 user1370786,

我认为您的问题是 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);
0
额外