大家好我是android的初学者,请帮忙。 我有DBAdapter类,它有不同的方法来操作我的数据库。 我想调用方法,即单击按钮时插入。但是它只能在侦听器之外工作(View.OnClickListener)。
package com.dbclass;
import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class DBActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn1 = (Button)findViewById(R.id.Button01);
btn1.setOnClickListener(btn1Listener);
DBAdapter db = new DBAdapter(this);
db.open();
long id;
// this needs to go to setOnclick method
id = db.insertTitle(
"0470285818",
"Alanel",
"Wrox");
Cursor c = db.getAllTitles();
if (c.moveToFirst())
{
do {
DisplayTitle(c);
} while (c.moveToNext());
}
db.close();
}
public void DisplayTitle(Cursor c)
{
Toast.makeText(this,
"id: " + c.getString(0) + "\n" +
"ISBN: " + c.getString(1) + "\n" +
"TITLE: " + c.getString(2) + "\n" +
"PUBLISHER: " + c.getString(3),
Toast.LENGTH_LONG).show();
}
private View.OnClickListener btn1Listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
// db.insertTitle("0470285818", "Alanel", "Wrox");
}
};
}
答案 0 :(得分:2)
将db
变量设为DBActivity
的字段。您可能不希望在UI线程上执行数据库操作。
答案 1 :(得分:2)
您的db
方法结束时似乎正在关闭onCreate()
。您应该确保在open()
中再次close()
和onClick()
。您也应该在从onClick()
方法开始的后台线程中完成实际工作。
答案 2 :(得分:0)
db
的范围仅限于onCreate()
方法。您可能希望将其设为Class
。