在我的应用程序中,我有一个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");
}
答案 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");
它已被弃用,但应该可以使用。