我需要在我的SQLite DB中执行搜索操作。
在我的活动中,我有用于输入关键字的EditText和一个搜索Button。用户单击该按钮后,EditText文本将存储在keyword中,并发送到DBHelper类中的search(String keyword)方法。
我在我的onCreate()和onClick()的SearchActivity中有以下代码
//SearchActivity class extends ListActivity and implements OnClickListener
Button search;
DataBaseHelper myDbHelper;
SimpleCursorAdapter ca;
ListView lv;
EditText txt;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.search_layout);
txt = (EditText) findViewById(R.id.search_term);
search = (Button) findViewById(R.id.search_button);
search.setOnClickListener(this);
}
public void onClick(View v) {
try {
myDbHelper.openDataBase();
} catch (SQLException sqle) {}
try {
String keyword= txt.getText().toString();
Cursor cursor = myDbHelper.search(keyword); //A method in my DB
cursor.moveToFirst();
String[] columns = {cursor.getColumnName(1)};
int[] columnsLayouts = {R.id.item_title};
ca = new SimpleCursorAdapter(this.getBaseContext(), R.layout.items_layout, cursor,columns , columnsLayouts);
lv = getListView();
lv.setAdapter(ca);
} catch(Exception e){}
}然而,我在LogCat中得到了NullPointerException!!我找不到错误所在。
有人能帮上忙吗?
发布于 2011-07-19 14:01:15
对NullPointerException的描述可以提供更多的信息。但是NullPointerException很可能发生在这里:
1: Cursor cursor = myDbHelper.search(keyword); //A method in my DB
2: cursor.moveToFirst();
3: String[] columns = {cursor.getColumnName(1)}; 或者在这里:
1: try {
2: myDbHelper.openDataBase();
3: } catch (SQLException sqle) {}在第1行的第一部分:或第2行的第二部分:
您应该始终检查依赖于数据存在的对象是否为not null。因此,您应该检查cursor是否为null。另一件事可能是你永远不会初始化myDbHelper。
https://stackoverflow.com/questions/6742831
复制相似问题