我试图实现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()没有被调用。
为什么?调用此回调的条件是什么?
最佳答案
您的onCreateDialogView()
返回什么?onBindDialogView()
仅当您从中返回非空的自定义视图时才被调用。另外,onBindDialogView()
只在实际显示首选项时调用。参考文献:Source code of DialogPreference。具体见showDialog()
方法
如果您只是从onCreateDialogView()
返回超级实现,我怀疑它会返回null
。