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

试试这个

    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 回答
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 回答