我想要实现的目标:我想创建自己的首选项布局,其中包含SeekBar和其他元素,并且所有内容都在我的主要首选项中呈现为自定义类。
我做了什么:
- 我已经创建了自己的布局(将在首选项屏幕中呈现)。这是基本的XML:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<SeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
我创建了自定义类,扩展了Preference。这是我的样本:
公共类MyCustomPreference扩展了首选项{
public MyCustomPreference(Context context, AttributeSet attrs) {
super(context, attrs);
setLayoutResource(R.layout.mycustompreferencelayout);
}
- 我已经创建了主要首选项(其中包含复选框和其他元素,包括我的自定义首选项)。这是我的样本:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference android:title="Checkbox1"></CheckBoxPreference>
<MyCustomPreference
android:key="customKey"></MyCustomPreference>
</PreferenceScreen>
当我想在主要首选项文件中看到我的自定义布局时,我只能看到复选框和空白区域,它应该是我的自定义首选项。 XML说它是一个渲染问题。
java.lang.NullPointerException
at android.preference.PreferenceGroup.addPreference(PreferenceGroup.java:139)
at android.preference.PreferenceGroup.addItemFromInflater(PreferenceGroup.java:105)
at android.preference.PreferenceGroup.addItemFromInflater(PreferenceGroup.java:42)
at android.preference.GenericInflater.rInflate(GenericInflater.java:490)
at android.preference.GenericInflater.inflate(GenericInflater.java:327)
at android.preference.Preference_Delegate.inflatePreference(Preference_Delegate.java:60)
at com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:320)
at com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:429)
at com.android.ide.common.rendering.LayoutLibrary.createSession(LayoutLibrary.java:368)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:567)
at com.android.tools.idea.rendering.RenderTask$2.compute(RenderTask.java:549)
at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:863)
at com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:549)
at com.android.tools.idea.rendering.RenderTask.lambda$inflate$1(RenderTask.java:680)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
显然我在这里遗漏了一些东西。官方Settings文档阅读量很大,但缺少很多信息。
帮助会非常受欢迎,因为这让我疯狂!
答案 0 :(得分:1)
使用自定义偏好类时使用完整包
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference android:title="Checkbox1"></CheckBoxPreference>
<your.full.package.MyCustomPreference
android:key="customKey"></MyCustomPreference>
现在启动你的应用程序
注意。强> Android Studio预览版不会显示您的自定义偏好