如何删除此警告 - "此处不允许使用Element SwitchPreferenceCompat"?

时间:2017-06-30 09:25:27

标签: android xml

在res / xml /文件名pref_visualizer.xml

中的Android项目中
<?xml version="1.0" encoding="utf-8"?>

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <SwitchPreferenceCompat
        android:defaultValue="@bool/pref_show_bass_default"
        android:key="@string/pref_show_bass_key"
        android:summaryOff="@string/pref_show_false"
        android:summaryOn="@string/pref_show_true"
        android:title="@string/pref_show_bass_label" />
    <SwitchPreferenceCompat
        android:key="@string/pref_show_mid_key"
        android:title="@string/pref_show_mid_label"
        android:summaryOff="@string/pref_show_false"
        android:summaryOn="@string/pref_show_true"
        android:defaultValue="@bool/pref_show_bass_default" />
    <SwitchPreferenceCompat
        android:key="@string/pref_show_treble_key"
        android:title="@string/pref_show_treble_label"
        android:summaryOff="@string/pref_show_false"
        android:summaryOn="@string/pref_show_true"
        android:defaultValue="@bool/pref_show_bass_default" />

</PreferenceScreen>

SwitchPreferenceCompat文本突出显示,并说它不允许在这里。如何修复此警告。该应用程序运行没有任何问题。但我仍然想知道如何解决这个问题。

6 个答案:

答案 0 :(得分:29)

尝试在首选项XML文件的根标记中替换PreferenceScreen android.support.v7.preference.PreferenceScreen(在本例中为pref_visualizer.xml)。

答案 1 :(得分:1)

“ SwitchPreferenceCompat”标签属于com.android.support:preference-v7:28.0.0库。 因此,您需要匹配父“ PreferenceScreen”标记和“ SwitchPreference”标记的库(建议使用@ f0rrest将父标记更新为v7)。但是,Android开发者网站(developer.android.com/guide/topics/ui/settings)中的说明和建议是使用AndroidX首选项库。 因此,我建议将项目迁移到AndroidX并使用“ androidx.preference.PreferenceScreen”作为父标记。

答案 2 :(得分:1)

作为f0rrest对较新版本的回答的补充,您还可以将PreferenceScreen替换为androidx.preference.PreferenceScreen,这同样适用。

答案 3 :(得分:0)

使用SwitchPreference代替SwitchPreferenceCompat

答案 4 :(得分:0)

使用xml中类的完整路径来避免该问题:

<com.example.CustomSwitchPreference..

答案 5 :(得分:0)

您的PreferenceScreen的布局不能位于res / layout /中,而必须位于res / xml /