目前,我想要做一个设置菜单,即会显示一个MultiSelectListPreference
,选择从您的联系人列表中的多个联系人。
在这一刻,我收到一个NullPointerException
,当我尝试MultiSelectListPreference#setEntryValue(CharSequence[])
如果我把setEntries
第一,一个抛出同样的异常。
我已经把一个断点,走一步看一步会发生什么。 这些变量填充,因为它们存储Strings
,它们可以包含String
“空”,所以我想,如果没有它不会失败Display_Name
可用左右。
我基于findPreference上的例子这个答案
任何人有一个想法? 如果您需要了解更多信息,请告诉我。 谢谢阅读!
package be.wdk.sendtowork;contactNumberArray
import android.database.Cursor;
import android.os.Bundle;
import android.preference.MultiSelectListPreference;
import android.preference.PreferenceFragment;
import android.provider.ContactsContract;
import android.util.Log;
import android.widget.Toast;
public class PreferenceClass extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Integer countContacts = 0;
String[] projection = new String[]{
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.PHOTO_URI
};
String selection = ContactsContract.CommonDataKinds.Phone.HAS_PHONE_NUMBER;
String sortOrder = ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME;
try {
Cursor c1 = getActivity().getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, projection, selection, null, sortOrder);
c1.moveToFirst();
Integer c1columncount = c1.getColumnCount();
Integer c1count = c1.getCount();
Toast toastje = Toast.makeText(getActivity(), c1columncount.toString() + " - " + c1count.toString(), Toast.LENGTH_SHORT);
toastje.show();
CharSequence[] contactNameArray = new CharSequence[c1count], contactNumberArray = new CharSequence[c1count];
MultiSelectListPreference mslp = (MultiSelectListPreference) findPreference("contactList");
do {
contactNameArray[countContacts] = c1.getString(0) + " - " + c1.getString(2);
contactNumberArray[countContacts] = c1.getString(1);
countContacts += 1;
} while(c1.moveToNext());
mslp.setEntryValues(contactNumberArray); //<- line that throws the error
mslp.setEntries(contactNameArray);
addPreferencesFromResource(R.xml.preferences);
}
catch (Exception e) {
Log.v("TAG", " " + e.toString());
e.getMessage();
}
}
}
编辑:好吧,我做了一对夫妇更多的检查。 -I在我的XML做了一个试验偏好和使用的findPrefence使对象的它一起工作 - >返回NULL -I已设置我的我的MultiSelectListPreference为@ string /测试的关键,在我的strings.xml,findpreference这个推杆还是返回null。
哪有我PreferenceFragment一个问题吗?