我有一个有偏好活动language作为ListPreference其显示可用的语言列表.我可以在调用onCreate时填充列表,但是当用户点击它时我想填写列表.
this is the java code :
public class SettingsActivity extends PreferenceActivity implements OnPreferenceClickListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
addPreferencesFromResource(R.xml.settings);
} catch (Exception e) {
}
}
@Override
public boolean onPreferenceClick(Preference preference) {
if((preference instanceof ListPreference) && (preference.getKey().equals("language"))){
ListPreference lp = (ListPreference)preference;
CharSequence[] entries = { "English", "French" };
CharSequence[] entryValues = {"1" , "2"};
lp.setEntries(entries);
lp.setDefaultValue("1");
lp.setEntryValues(entryValues);
return true;
}
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
这是settings.xml(偏好):
<?xml version="1.0" encoding="utf-8"?> …Run Code Online (Sandbox Code Playgroud) 我正在尝试制作一个设置菜单,它会显示一个MultiSelectListPreference,从联系人列表中选择多个联系人.
在这一刻,我正在接受一个NullPointerException,当我尝试MultiSelectListPreference#setEntryValue(CharSequence[])如果我把第setEntries一个,那个抛出相同的异常.
我已经提出了一个断点,一步一步地看到会发生什么.变量因为存储而被填充Strings,它们可以包含String"null",所以我猜如果没有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, …Run Code Online (Sandbox Code Playgroud) java android nullpointerexception multi-select android-preferences