gpt4 book ai didi

java - PreferenceFragment.findPreference 总是返回 NULL

转载 作者:搜寻专家 更新时间:2023-10-30 21:38:43 24 4
gpt4 key购买 nike

我目前正在尝试制作一个设置菜单,它将显示一个 MultiSelectListPreference,以从您的联系人列表中选择多个联系人。

此刻,当我尝试 MultiSelectListPreference#setEntryValue(CharSequence[]) 时,我收到一个 NullPointerException 如果我把 setEntries 首先,那个抛出相同的异常。

我设置了一个断点,一步一步地看会发生什么。变量被填充是因为它们存储 Strings,它们可以包含 String“null”,所以我猜如果没有 Display_Name< 也不会失败 可用左右。

我将 findPreference 基于 this answer 的示例

有人有想法吗?如果您需要更多信息,请告诉我。感谢阅读!

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();
}
}
}

编辑: 好的,我又做了几次检查。-我在我的 XML 中做了一个测试首选项,并使用 findPrefence 来创建一个对象来使用 -> 返回 NULL- 我已将我的 MultiSelectListPreference 的键设置为 @string/test,将其放入我的 strings.xml 中,findpreference 仍然返回 Null。

我的 PreferenceFragment 会不会有问题?

最佳答案

好的,我发现我的问题是什么。

MultiSelectListPreference mslp = (MultiSelectListPreference) findPreference("contactList"); 

返回 NULL 因为

addPreferencesFromResource(R.xml.preferences);

一开始还没有完成...所以它还没有加载我的偏好。

关于java - PreferenceFragment.findPreference 总是返回 NULL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14339550/

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