PreferenceScreen监听子项的刷新

有个PreferenceScreen,他有一些个子项目。它的Summary需要根据子项的设置来改变的,所以需要监听子项的刷新事件。

 

preferenceScreen.setOnPreferenceChangeListener( ) 是不管用的。

不过,它的RootAdapter在子项更新时却能够收到事件,所以就直接上代码了:

// Auto update Summary when related preference changed.
preferenceScreen.getRootAdapter().registerDataSetObserver(new DataSetObserver() {
	@Override
	public void onChanged()
	{
		super.onChanged();
		// Update Summary...
	}
});

 

哦,还有就是,收到这个事件的时候,Preference的Value已经改变了,所以就可以放心地读取新的值了。

不像setOnPreferenceChangeListener( ),在这个事件执行的时候,它的值还没有改变。虽然可以通过OnPreferenceChange的参数判断新的值,但是在某些时候还是不方便,比如需要调用一个已有的方法,而这个方法又不能接收这个新的值的时候。

Tips:这时可以使用Handler.post()方法。

posted @ 2014-04-25 01:21  h46incon  阅读(1658)  评论(0编辑  收藏  举报