代码之家  ›  专栏  ›  技术社区  ›  dimsuz

是否可以在不显示首选项屏幕的情况下显示对话框首选项?

  •  2
  • dimsuz  · 技术社区  · 14 年前

    我目前正在为Android编写一个动态壁纸,它有一个PreferenceScreen,当前只包含一个首选项——DialogPreference,用于设置动画的各种属性。

    当前配置它的用户工作流如下所示: 设置。。。=>(仅显示一个标题的首选项列表)Animation speed=>MyDialogPreference

    我想要的是使工作流像这样: 设置。。。=>我的对话框首选项

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

    但PreferenceActivity似乎要求自己将PreferenceScreen作为首选项层次结构的根元素。所以…有没有可能做我想做的?:)

    代码引用:

    活动代码:

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

    PREFS资源:

    <?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>
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   dimsuz    14 年前

    结果证明这是不可能的。

    但我找到了一个解决方法:我将我的活动设置为自定义活动,而不是首选活动,并通过将以下内容放入androidmanifest.xml中使其看起来像对话框

    <activity android:theme="@android:style/Theme.Dialog" .... />
    
        2
  •  0
  •   Ryan Conrad    14 年前

    DialogPreference具有ShowDialog(bundle state)方法,请尝试调用它。我不确定你是否需要给它其他的东西,如偏好或其他。