我正在创建一个应用程序将文本字段值存储到数据库。当我按下按钮提交它时输入值后,它只是挂起并且没有给出任何响应。
我的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)
您正在创建应用程序时读取文本字段的值,而不是按下按钮时的值。您将始终使用当前代码输入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);