从自定义首选项获取视图

时间:2014-03-27 14:35:41

标签: android android-xml android-preferences

在我的应用程序中,我有一个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");
}

2 个答案:

答案 0 :(得分:2)

您可以使用活动中的Preference p = findPrefences("test")来获取偏好(如果您使用的是较新版本的Android,则可以使用PreferenceFragment)。

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

HTH

答案 1 :(得分:-1)

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

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

并且可能是:

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

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