从自定义首选项获取视图

在我的应用程序中,我有一个PreferenceScreen,它看起来像这样:

<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获取pref_control.xml的视图? 我尝试了正常的findViewById()但以NullPointerException结束。 这是我的代码,导致异常:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);

    ((Button) findViewById(R.id.startTime)).setText("bla");
    ((Button) findViewById(R.id.endTime)).setText("bla");
}

您可以通过使用Preference p = findPrefences("test")来获得首选项(如果您使用的是Android的更新版本,则可以更好地使用PreferenceFragment)。

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

HTH


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

final CheckBoxPreference stateCheckBox = (CheckBoxPreference)findPreference("state");

据推测:

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

它已被弃用,但它应该工作。

链接地址: http://www.djcxy.com/p/19677.html

上一篇: Get View from custom Preference

下一篇: understanding python variable assignment