这是我的代码:
void openContactsList() {
// TODO Auto-generated method stub
// getting phone number and name of the contacts
Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
String[] projection = new String[] {
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER };
Cursor people = getContentResolver().query(uri, projection, null, null,
null);
int indexName = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME);
int indexNumber = people.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
j = 0;
people.moveToFirst();
ContactsDataBase entry = new ContactsDataBase(Contacts.this);
entry.open();
do {
LinearLayout row = new LinearLayout(this);
row.setLayoutParams(params);
for (j = 0; (j < 3) && next; j++) {
// create the person and put it in the db table
String name = people.getString(indexName);
String number = people.getString(indexNumber);
// create every person Image button
CheckBox btnTag = new CheckBox(this);
butparams.setMargins(j, 10, 0, 0);
btnTag.setGravity(10);
btnTag.setLayoutParams(butparams);
btnTag.setText(number + "\n" + name);
btnTag.setTextSize(10);
btnTag.setTag("Button " + name);
try {
int num = Integer.parseInt(number);
btnTag.setId(num);
} catch (NumberFormatException nfe) {
// Handle parse error.
}
entry.createEntry(name, number, indexNumber);
btnTag.getLayoutParams().width = 70;
btnTag.getLayoutParams().height = 70;
next = people.moveToNext();
row.addView(btnTag);
}
layout12.addView(row);
} while (next);
entry.close();
people.`enter code here`close();
}
我在获取以*
开头的数字时遇到问题
我认为问题在于Integer.parseInt(number);
行
当我试图采取尝试并赶上时我得到一个错误
那么如何在没有例外的情况下获得所有数字
谢谢。
答案 0 :(得分:4)
Integer.parseInt()需要数字的字符串表示。 * 的字符串不是数字 正如DavidFletcher所说,删除所有不需要的字符(包括+或空格)以使字符串成为干净的数字。
答案 1 :(得分:1)
你需要保留*吗?如果没有,你不能用“”替换*“
答案 2 :(得分:0)
Integer.parseInt(str)期望str是一个整数。
如果您使用EditBox作为应用程序中的输入源,则可以将此属性添加到xml中,它只允许使用数字字符作为输入: 机器人:的inputType = “数量”
否则,您可以通过执行Integer.parseInt(str.replace(“*”,“”))删除*字符。
请注意,您也可以使用“numberDecimal”表示十进制数字。