gpt4 book ai didi

java - 实例化内容解析器时出现空指针异常?

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:07:27 25 4
gpt4 key购买 nike

在我的 Android 中,我正在使用内容解析器读取联系人。但是内容解析器没有得到初始化,它给出了 NullPointerException。我想在另一个类中使用字符串数组并获取其中的值我必须查询数据库并从电话中读取联系人,但如代码中指出的那样坚持该异常:

//this code is in some other class...     
et= (EditText) findViewById(R.id.searchcontact);
et.addTextChangedListener(new TextWatcher() {

public void onTextChanged(CharSequence s, int start, int before, int
count) { // TODO Auto-generated method stub
lva.getFilter().filter(s);

RefreshListView rlv=new RefreshListView();<----class is getting called from here
lva.notifyDataSetInvalidated();
lva = new ListViewAdapterContacts(AllContactsActivity.this, rlv.names, rlv.types, rlv.phones, rlv.ids);

lv.setAdapter(lva);


}

public void beforeTextChanged(CharSequence s, int start, int count,
int after) { // TODO Auto-generated method stub

}

public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub


// lva.notifyDataSetChanged();
}
});

...............********.........

public class RefreshListView extends ListActivity{

String[] names,phones,types,ids;
String name,id,phoneNumber;
int type;
ArrayList <String> newValues;

public void onCreate(Bundle b){
super.onCreate(b);

newValues=SetNewList.getNames();
getContacts();
}



public void getContacts(){
int foo = 0;


ContentResolver cr = getContentResolver();<---//null pointer exception

Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, null,
null, null, "UPPER(" + ContactsContract.Contacts.DISPLAY_NAME
+ ") ASC");
if (cur.getCount() > 0) {

names = new String[cur.getCount()];
phones = new String[cur.getCount()];
types = new String[cur.getCount()];
ids = new String[cur.getCount()];

while (cur.moveToNext()) {

name = cur
.getString(cur
.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));
for(int i=0;i<=newValues.size();i++){
if(newValues.get(i).equalsIgnoreCase(name)) {
id = cur.getString(cur
.getColumnIndex(ContactsContract.Contacts._ID));
String hasPhone = cur
.getString(cur
.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));

if (Integer.parseInt(hasPhone) == 1) {

Cursor phones = getContentResolver().query(
ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null,
ContactsContract.CommonDataKinds.Phone.CONTACT_ID
+ " = " + id, null, null);

while (phones.moveToNext()) {
phoneNumber = phones
.getString(phones
.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));

type = phones.getInt(phones.getColumnIndex(Phone.TYPE));

} // while

phones.close();
}// if

else {
phoneNumber = "unknown";
type = 0;

}// else



phones[foo] = phoneNumber;
names[foo] = name;
ids[foo] = id;

if (type == 0) {
String value = "unknown";
types[foo] = value;
}

else if (type == 1) {
String value = "home";
types[foo] = value;
}// if

else if (type == 2) {
String value = "mobile";
types[foo] = value;
}// else if

else if (type == 3) {
String value = "Work";
types[foo] = value;
}

else if (type == 4) {
String value = "Workfax";
types[foo] = value;
}

else if (type == 5) {
String value = "Home Fax";
types[foo] = value;

} else if (type == 6) {
String value = "Pager";
types[foo] = value;
}

else {
String value = "Other";

types[foo] = value;
}

foo++;
}
}
}// while
}// if


}// get contacts

}

最佳答案

不要这样做......

public class RefreshListView extends ListActivity{

public RefreshListView() {

...

}
}

不要为 Android Activity 使用构造函数!!!

您应该删除该构造函数并将代码放入 Activity onCreate(...) 方法中。

请参阅 Activity 的文档并阅读 Activities .

尝试这样的事情......

public class RefreshListView extends ListActivity{

String[] names,phones,types,ids;
String name,id,phoneNumber;
int type;
ArrayList <String> newValues;
ContentResolver cr = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

cr = getContentResolver();
newValues=SetNewList.getNames();//getnames is of static type
getContacts();
}

public void getContacts() {
int foo = 0;

// REMOVE THE NEXT LINE !!!
// ContentResolver cr = getContentResolver();

...

}
}

关于java - 实例化内容解析器时出现空指针异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8399607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com