在我的应用程序中,我有一个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"); }
解决方法
您可以通过在Activity中使用Preference p = findPrefences(“test”)来获取Preference(如果您使用的是较新版本的Android,则可以更好地使用PreferenceFragment).
在该对象上,您可以调用.getView(convertView,parent).为了您的目的,可以使用null作为参数调用该方法:findPreferences(“test”).getView(null,null).
HTH