我正在处理的应用程序是由联系人组织的笔记集合。我在使用游标向数据库查询正确的信息行时遇到问题。主要活动是基于联系人URI的联系人列表。单击联系人会将Contact _ID作为意图字符串传递。我想将字符串传递给游标,只显示contactId键与intent字符串匹配的行,但每次传递字符串时,我都会得到“NumberFormatException:无法将'null'解析为整数。”我知道意图正在进行,因为我创建了一个菜单项,它在其中生成带有intent字符串的toast消息,每次都可以正常工作,并且当使用ID对参数进行硬编码时,游标会起作用。我只是想知道出了什么问题!我只用了一个半星期的Android,所以它很可能非常简单。任何帮助是极大的赞赏。我的代码如下。
这是应显示已过滤的数据行的活动:
public class NotesList extends ListActivity {
public MyDbAdapter db;
public String mIntentString, contactId;
public int mIntentInt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
db = new MyDbAdapter(this);
db.open();
fillData();
Bundle extras = getIntent().getExtras();
mIntentString = extras.getString("contactId");
contactId = extras.getString("contactId");
}
private void fillData() {
Cursor mCursor = db.fetchNotesForContact(contactId);
startManagingCursor(mCursor);
ListAdapter adapter = new SimpleCursorAdapter(
this,
android.R.layout.two_line_list_item,
mCursor,
new String[] {MyDbAdapter.KEY_TITLE, MyDbAdapter.KEY_DATETIME},
new int[] {android.R.id.text1, android.R.id.text2});
setListAdapter(adapter);
}
这是被调用游标的代码,当将参数从“contactId”更改为“139”时,将返回该联系人的注释:
public Cursor fetchNotesForContact(String contactId) {
String[] columns = {KEY_ROWID, KEY_CONTACTID, KEY_TITLE, KEY_BODY, KEY_DATETIME};
String projection = ("contactId = ?");
String[] arguments = {contactId};
return mDb.query(DATABASE_TABLE, columns, projection, arguments, null, null, null);
}
答案 0 :(得分:1)
问题是,在contactId具有其值之前,您正在调用fillData()
方法。因此null
中的fetchNotesForContact
也是如此。
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
db = new MyDbAdapter(this);
db.open();
//fillData(); move this
Bundle extras = getIntent().getExtras();
mIntentString = extras.getString("contactId");
contactId = extras.getString("contactId");
fillData(); //to here
}
希望有所帮助。