我启动了一个 PreferenceActivity,我在其中以编程方式添加了一些首选项屏幕。所以我有一个带有我的偏好屏幕的列表。
例子:
- 托托
- 蒂蒂
- 塔塔
所以我迭代并调用一个函数(Board
是一个自定义对象):
private PreferenceScreen CreatePreferenceScreen(Board b) {
PreferenceScreen p = getPreferenceManager().createPreferenceScreen(this);
p.setPersistent(true);
p.setKey("preferenceScreen_" + b.getId());
PreferenceCategory general = new PreferenceCategory(this);
general.setTitle("General");
p.addPreference(general);
Preference delete = new Preference(this);
delete.setTitle("delete");
final PreferenceScreen pFinal = p;
delete.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference arg0) {
String delId = board.getId();
PreferenceCategory themes = (PreferenceCategory) findPreference("themes");
PreferenceScreen screen =(PreferenceScreen)findPreference("preferenceScreen_" + delId);
themes.removePreference(screen);
/*GO BACK TO PREFERENCEACTIVITY HERE OR KILL THIS SCREEN*/
return true;
}
});
general.addPreference(delete);
return p;
}
如果我点击 toto,它会打开 toto 的首选项屏幕,在这个屏幕上我有一个选项“删除”。如果我单击删除,它将从 PreferenceActivity(上一个屏幕)中删除此首选项屏幕,但我仍然在首选项屏幕上。
当我使用“删除”时,我想返回上一个屏幕。
我无法finish()
在我的偏好屏幕上使用 toto,因为它退出了应用程序。如果我点击后退按钮,我会返回 PreferenceActivity(上一个屏幕),我的 toto 首选项屏幕已被删除(yata,该功能有效!)