android – 从自定义首选项获取视图

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

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...