Android数据库应用程序无响应

时间:2012-05-24 07:25:44

标签: android database sqlite

我正在创建一个应用程序将文本字段值存储到数据库。当我按下按钮提交它时输入值后,它只是挂起并且没有给出任何响应。

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

我的代码出了什么问题?

感谢。

3 个答案:

答案 0 :(得分:1)

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

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

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

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

答案 1 :(得分: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);

        }
    });

答案 2 :(得分: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);