Android 从自定义首选项获取视图

Android 从自定义首选项获取视图,android,android-xml,android-preferences,Android,Android Xml,Android Preferences,在我的应用程序中,我的首选项屏幕如下所示: <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <CheckBoxPreference android:key="state" android:title="@string/stateTitle" android:summary="@string/

在我的应用程序中,我的首选项屏幕如下所示:

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
    <CheckBoxPreference
            android:key="state"
            android:title="@string/stateTitle"
            android:summary="@string/stateSummary"
            android:defaultValue="false" />

    <Preference
            android:key="test"
            android:layout="@layout/pref_control"
            android:dependency="state" />
</PreferenceScreen>

由于您使用的是PreferenceActivity,因此可以使用:

final CheckBoxPreference stateCheckBox = (CheckBoxPreference)findPreference("state");
大概是:

final Preference testPreference = (Preference)findPreference("test");

它已被弃用,但应该可以使用。

您可以通过使用活动中的
首选项p=findPreferences(“test”)
来获得首选项(如果您使用的是较新版本的Android,最好使用PreferenceFragment)

在该对象上,您可以调用
.getView(convertView,parent)
。出于您的目的,可以使用null作为参数调用该方法:
findPreferences(“test”).getView(null,null)


HTH

是的,我当然知道,但我在测试首选项中使用自定义布局。在这个布局中有一个按钮,我想得到这个按钮,但在
首选项
对象中,我没有一个名为
findviewbyd()
或其他方法。哦,我明白了,我想这取决于您使用findviewbyd的时间。我原以为只要在你把布局放大之后就可以了。我认为你应该发布导致异常的代码。我用代码更新了我的问题。你认为我必须再次为自己的布局充气才能使用上面的代码吗?如果你需要做的只是设置文本,只需在XML中进行设置。
final Preference testPreference = (Preference)findPreference("test");