20100311

1:每次单击联系人姓名以查看联系人详细信息时都会报错:E/AndroidRuntime(  716): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.phonebook/com.android.phonebook.ContactInfo}: java.lang.IllegalArgumentException: Invalid column photo_version 及E/AndroidRuntime(  716): Caused by: java.lang.IllegalArgumentException: Invalid column photo_version 。之后,我尝试在people中添加sex字段,替代photo_version的 功能。但是错误依旧:E/AndroidRuntime(  787): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { (has extras) }} to activity {com.android.phonebook/com.android.phonebook.ListContacts}: java.lang.IllegalArgumentException: column 'sex' is invalid及E/AndroidRuntime(  787): Caused by: java.lang.IllegalArgumentException: column 'sex' is invalid。
当执行了rm contacts.db后,一定不要忘记利用alter命令添加sex字段到people表中。但这样还是不能解决问题,最后我将判断性别的致存入notes字段中,问题终于可以解决了。

2:如果将qq以如下方式插入数据库:addToContactMethod(person_id, qq, Contacts.KIND_IM, People.ContactMethods.TYPE_CUSTOM);,则会报以下错误:Error inserting isprimary=1 data=565241284 type=0 kind=3 person=3 into table  contact_methods 当改为:addToContactMethod(person_id, qq, Contacts.KIND_IM, People.ContactMethods.TYPE_OTHER);后可以解决问题。因为qq被预设为TYPE_OTHER类型。另外在判断一个字符串是否为数字型的时候我利用了正则表达式来判断。

3:“equals” 和 “==”的区别。我想通过sex的值来加载不同的头像图片,所以要判断sex的值是“girl“还是”boy“就因该用 if(sex.equals("girl“){ } 而不是 if(sex == “girl"){ }。“==”表示同一地址的同一值,而equals则是表示值相同,但不一定在同一地址上。切记,判断sex是equals(“girl“)还是equals(“boy“)之前一定要判断sex是否为null。

4:ContentResolver中的查询语句有些诡异。 如果你的查询条件是一个字符串型则可以用以下格式:Cursor result = resolver.query(PEOPLE_URI, PROJECTION_PEOPLE, "name=?", new String[]{name}, null); 但如果你的查询条件是整形(常整形例外)则不可以用以下相似的格式:Cursor result = resolver.query(CONTACT_METHODS_URI, PROJECTION_METHODS, "person=?", new String[]{String.valueOf("person")}, null);而应该改为Cursor result = resolver.query(CONTACT_METHODS_URI, PROJECTION_METHODS, "person=" + String.valueOf(person), null, null);否则你将得不到结果。(注:name为字符串型,person为整形)。

5:数据库中的记录的_id都是从1开始。而View中的position是从0开始。

6:完成了查看联系人详细信息。可以添加联系人,但是在Contacts中插入新的联系人时,开始两个不能显示姓名,之后添加的可以正常显示,最好rm contacts.db再重新加载contacts.db。删除选项可以实现,但删除成功的同时也会报错: java.lang.UnsupportedOperationException: Cannot delete that URL: content://contacts/phones。这个问题暂时放下。

7:判断输入的字符串是否为电话号码,可以在new_contact.xml文件中id=newPhone的EditText中设置android:phoneNumber="true"就可以 。

你可能感兴趣的:(Java,2010,methods,equals,null,正则表达式,string)