Mae*_*lig 11 android android-preferences
我启动了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;
}
Run Code Online (Sandbox Code Playgroud)
如果我点击toto,它会打开toto的首选项屏幕,在这个屏幕上我有一个选项"删除".如果我点击删除它会从PreferenceActivity(上一个屏幕)中删除此首选项屏幕,但我仍然在首选屏幕上.
当我使用"删除"时,我想回到上一个屏幕.
我不能finish()在我的偏好屏幕上使用它,因为它退出了应用程序.如果我点击我的后退按钮,我会回到PreferenceActivity(上一个屏幕),我的toto首选项屏幕已被删除(yata,该功能有效!)
用户通过PreferenceScreen 开发人员文档找到了解决方案。
当它出现在另一个首选项层次结构中时,它会被显示并充当另一个首选项屏幕的网关(通过将另一个首选项屏幕显示为对话框或通过 getIntent() 中的 startActivity(android.content.Intent) )。此 PreferenceScreen 的子项不会显示在显示此 PreferenceScreen 的屏幕中。相反,单击此首选项时将显示一个单独的屏幕。
所以替换这个:
/*GO BACK TO PREFERENCEACTIVITY HERE OR KILL THIS SCREEN*/
Run Code Online (Sandbox Code Playgroud)
有了这个:
pFinal.getDialog().dismiss();
Run Code Online (Sandbox Code Playgroud)
它完成了预期的工作:关闭当前的preferenceScreen.
| 归档时间: |
|
| 查看次数: |
2463 次 |
| 最近记录: |