我正在處理的應用程序是由聯繫人組織的筆記集合。我在使用遊標查詢數據庫以獲取正確的信息行時遇到問題。主要活動是基於Contacts URI的聯繫人列表。單擊一個聯繫人將Contact _ID作爲意向字符串傳遞。我想傳遞字符串到遊標中,只顯示contactId鍵匹配意圖字符串的行,但每次傳遞字符串時,我都會得到「NumberFormatException:無法解析'null'作爲整數。」我知道意圖正在經歷,因爲我創建了一個菜單項,它使用intent字符串生成一個吐司消息,每次都可以正常工作,而且在使用ID對參數進行硬編碼時,光標可以正常工作。我只是不知道哪裏出了問題!我只用了大概一週半的時間就可以使用Android,所以非常簡單。任何幫助是極大的讚賞。我的代碼如下。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);
}
你的contactId列的數據類型是什麼 – 2011-03-16 07:17:32
contactId是一個整數。我曾考慮將其更改爲字符串,但不確定是否會有任何反響,因爲ContactsContract.Contacts._ID是一個整數。不知道它是否真的很重要。 – 2011-03-16 07:32:56