我正在尝试实现ListPreference的子类,并且当它的构造函数被调用时(显示它时),它的覆盖onBindDialogView不是。
public MyListPreference(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
Log.v(TAG, "MyListPreference constructed.");
}
@Override
protected void onBindDialogView(View view) {
super.onBindDialogView(view);
Log.v(TAG, "onBindDialogView called");
}
为什么会这样?我错过了什么?
更新:我在onCreateDialogView()中植入了一条日志消息,并且 也被调用了。
仅onBindDialogView() 被调用。
为什么呢?调用此回调的条件是什么?
答案 0 :(得分:5)
您onCreateDialogView()
的回报是什么?仅当您从那里返回非空自定义视图时才会调用onBindDialogView()
。此外,onBindDialogView()
仅在您实际显示首选项时调用。参考:Source code of DialogPreference。特别是,请参阅showDialog()
方法
如果您只是从onCreateDialogView()
返回超级实施,我怀疑它会返回null
。