AndroidManifest.xml中
com.android.settings.Settings这个类
<category android:name="android.intent.category.LAUNCHER" /> 所在launcher的界面可以直接启动Settings。
Settings的基本关系:public class Settings extends PreferenceActivity implements ButtonBarHandler
可以看出Settings即为PreferenceActivity。
PreferenceActivity的各个Item如何添加(以Settings为例):
PreferenceActivity ----setListAdapter----->HeaderAdapter(mHeaders)----->HeaderViewHolder(ImageView icon;TextView title;TextView summary;)
基本实现就是通过HeaderAdapter将mHeaders适配到ListView当中。而在适配每一个Header的时候,会取出header的icon以及title,summary等并放入HeaderViewHolder中,
然后通过view.setTag(holder);将holer设给view,最后返回每一个view为一个item。
所以在Settings中的每一个item都是一个header, 而你这些header是在settings_headers.xml文件中配置的。通过loadHeadersFromResource(R.xml.settings_headers, headers);将其加载进来。loadHeadersFromResource这个函数就是一个xml的文件的解析函数,得到header并将其放入headers中。
接下来就是对各个item的监听:
继续在PreferenceActivity中:
onListItemClick---->onHeaderClick。在onHeaderClick中主要是有startWithFragment,switchToHeader,startActivity等三个函数根据需要实现界面的跳转。以蓝牙界面为例这里会跳用会startWithFragment启动一个fragment实现向蓝牙设置的界面的跳转。