首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >内部preferenceScreen出现黑屏

内部preferenceScreen出现黑屏
EN

Stack Overflow用户
提问于 2010-07-02 18:21:35
回答 4查看 5.5K关注 0票数 10

我的PreferenceActivity包含一个嵌套在另一个PreferenceScreen中的PreferenceScreen,并且我正在对我的PrefenceActivity应用一个改变背景颜色的主题。然而,当我打开嵌套的PreferenceScreen时,我得到一个黑色的背景,并且我看不到选项。

这发生在安卓2.1上,但不会发生在安卓1.6上。对如何纠正这个问题有什么想法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-12 00:01:09

我找到了一种方法来做这件事,但这是一个相当巧妙的方法。

这是我的prefs.xml

代码语言:javascript
复制
<PreferenceCategory
    android:title="@string/hello">

    <CheckBoxPreference
        key="pref_update_key"
        android:title="@string/hello"
        android:summaryOn="@string/hello"
        android:summaryOff="@string/hello"
        android:persistent="true"
        android:defaultValue="false" />

</PreferenceCategory>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:key="pref_second_preferencescreen_key" android:title="@string/hello">
        <CheckBoxPreference
        key="pref_update_key"
        android:title="@string/hello"
        android:summaryOn="@string/hello"
        android:summaryOff="@string/hello"
        android:persistent="true"
        android:defaultValue="false" />
</PreferenceScreen>

这是我的extends PreferenceActivity类的代码

代码语言:javascript
复制
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.layout.prefs);
    getWindow().setBackgroundDrawableResource(R.drawable.background);

    PreferenceScreen b = (PreferenceScreen) findPreference("pref_second_preferencescreen_key");
    b.setOnPreferenceClickListener(new OnPreferenceClickListener() {

        @Override
        public boolean onPreferenceClick(Preference preference) {
            PreferenceScreen a = (PreferenceScreen) preference;
            a.getDialog().getWindow().setBackgroundDrawableResource(R.drawable.background);
            return false;
        }
    });
}
票数 13
EN

Stack Overflow用户

发布于 2012-04-17 20:23:06

对我有效的方法:简单地设置一个列表样式:

代码语言:javascript
复制
<style name="Theme.Preferences" parent="android:Theme.Light" >
    <item name="android:listViewStyle">@style/lightListView</item>
</style>
<style name="lightListView">
    <item name="android:background">#ffffff<item>
</style>
票数 4
EN

Stack Overflow用户

发布于 2011-04-24 02:22:41

解决方法:

1)使用准备2个PreferenceScreen xml而不是子PreferenceScreen;

2)向AndroidManifest.xml添加辅助PreferenceScreen活动:

代码语言:javascript
复制
<activity android:name="com.example.PreferenceActivity2"
          android:label="Issue4611"
          android:theme="@android:style/Theme.Light">
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

3)对于在您的第一个PreferenceScreen中显示辅助PreferenceScreen使用:

代码语言:javascript
复制
<PreferenceScreen android:key="key1"
                  android:title="1 Item"
                  android:summary="">
    <intent android:action="android.intent.action.VIEW"
            android:targetPackage="com.example"
            android:targetClass="com.example.PreferenceActivity2"/>
</PreferenceScreen>

Example

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3164862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档