我正在尝试将布局和按钮元素放在res / xml / preferences.xml中。但是它抛出一个错误,说它无法找到RelativeLayout和Button的类。有什么方法可以解决这个问题吗?
这是代码。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true">
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<PreferenceCategory android:title="@string/title_notifications">
<SwitchPreference
android:defaultValue="true"
android:key="@string/notification_A"
android:title="A" />
<SwitchPreference
android:defaultValue="true"
android:key="@string/notification_B"
android:title="B" />
<SwitchPreference
android:defaultValue="true"
android:key="@string/notification_C"
android:title="C" />
</PreferenceCategory>
</PreferenceScreen>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="ABC"
android:onClick="showMPowerWebsite"
android:id="@+id/button_abc_website"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:background="#000000"
android:fontFamily="Arial"
android:textColor="#ffffff"
android:textAllCaps="false"
android:textSize="20sp"
android:layout_alignParentBottom="true"
/>
</RelativeLayout>
这是错误文本。
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:905)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:700)
Suppressed: java.lang.ClassNotFoundException: android.preference.RelativeLayout
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 26 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
答案 0 :(得分:0)
雅你不能那样做。来自Google's documentation:
因为您的应用程序的设置UI是使用Preference对象而不是View对象构建的,所以您需要使用专门的Activity或Fragment子类来显示列表设置:
这就是为什么你不能使用按钮,你的第二个错误就是使用relativelayout作为基本布局,再次来自文档:
XML文件的根节点必须是PreferenceScreen元素。
因此,如果你刚刚删除了按钮和RelativeLayout,这应该可行。
您还可以扩展首选项并创建自己的首选项,这样您就可以使用这样的常规视图,但这样更复杂,只有在无法使用提供的屏幕构建屏幕时才应该这样做偏好结构到位。