是否可以在不显示PreferenceScreen的情况下显示DialogPreference?

问题描述:

我目前正在为Android编写动态壁纸,它有一个PreferenceScreen,它当前只包含一个首选项 - 一个DialogPreference来设置动画的各种属性。是否可以在不显示PreferenceScreen的情况下显示DialogPreference?

用户的工作流程进行配置,目前看起来是这样的: 设置... =>(显示只有一个标题喜好列表)动画速度=> MyDialogPreference

我想就是让这样的工作流程: 设置... => MyDialogPreference

Ie我正在寻找一种方法来跳过只显示一个项目的首选项列表,并立即显示该对话框。

但PreferenceActivity似乎要求自己将PreferenceScreen作为偏好层次结构的根元素。所以...甚至有可能做我想做的事情? :)

代码引用:

活动代码:

public class ForestLakePreferences extends PreferenceActivity 
{ 
    protected void onCreate(Bundle savedState) 
    { 
     super.onCreate(savedState); 
     getPreferenceManager().setSharedPreferencesName(
       ForestLakeWallpaper.PREFS_NAME); 
     addPreferencesFromResource(R.xml.preferences); 
    } 
} 

偏好设置资源:

<?xml version="1.0" encoding="utf-8"?> 
<PreferenceScreen 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:key="lake_preferences"> 
    <DurationEditDialog 
      android:title="@string/prefs_duration_title" 
      android:dialogTitle="@string/configure_durations_dlg_title" 
      android:dialogLayout="@xml/set_durations_layout" /> 
</PreferenceScreen> 

事实证明,这不能以这种方式完成。

,但我已经找到了解决办法:我做了我的活动不是PreferencesActivity,而是一个自定义,并使它看起来像对话框放置在AndroidManifest.xml

<activity android:theme="@android:style/Theme.Dialog" .... /> 
以下

一个DialogPreference拥有的ShowDialog(包状态)的方法,尝试调用它。我不确定你是否必须给它任何其他的喜好或任何东西。