gpt4 book ai didi

java - 点击监听器上只有一项首选项有效

转载 作者:行者123 更新时间:2023-12-01 13:34:29 24 4
gpt4 key购买 nike

我根据我的动态数组动态创建首选项屏幕。这是在 for 循环中完成的。对于每个屏幕对象,我添加 onclick 监听器。但第一个只能工作。有什么问题吗?

这是我的代码。

MenuActivity.java

 public static ArrayList<Details> device_list;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preference);

createPreference();

}

private void createPreference() {

devicePref = (PreferenceScreen)getPreferenceScreen().findPreference("Manage Devices");
devicePref.removeAll();
if (MainActivity.device_list.size()!=0) {

for (int i = 0; i < MainActivity.device_list.size(); i++) {

PreferenceScreen screen= getPreferenceManager().createPreferenceScreen(this);
screen.setTitle(device_list.get(i).getName());
screen.setKey(device_list.get(i).getCust_id());
screen.setSummary(.device_list.get(i).getNic()+" "+device_list.get(i).getNumber());
screen.setOnPreferenceClickListener(new DevicePreferenceListner());
devicePref.addPreference(screen);

}
}else {
Toast.makeText(MenuActivity.this, "There is No any users", Toast.LENGTH_LONG).show();
}

}

private class DevicePreferenceListner implements OnPreferenceClickListener{

@Override
public boolean onPreferenceClick(Preference preference) {
//do some stuff....
return true;
}
}

当我运行它时,它会根据 device_list 数组元素创建首选项屏幕。但 onclick 监听器仅适用于第一个屏幕。我做错了什么?

谢谢。

最佳答案

在您的情况下,仅存在一个 PreferenceScreen 对象。您应该使用 PreferenceScreen 列表:

List <PreferenceScreen> prefScreens = new ArrayList<PreferenceScreen> ();
for (int i = 0; i < MainActivity.device_list.size(); i++)
{
prefScreens.add(new PreferenceScreen(getPreferenceManager().createPreferenceScreen(this)));
prefScreens.get(i).setOnPreferenceClickListener(new DevicePreferenceListner());
}

关于java - 点击监听器上只有一项首选项有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21379302/

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