没有调用onBindDialogView - 为什么?

时间:2013-06-22 18:58:15

标签: android listpreference dialog-preference

我正在尝试实现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() 被调用。

为什么呢?调用此回调的条件是什么?

1 个答案:

答案 0 :(得分:5)

onCreateDialogView()的回报是什么?仅当您从那里返回非空自定义视图时才会调用onBindDialogView()。此外,onBindDialogView()仅在您实际显示首选项时调用。参考:Source code of DialogPreference。特别是,请参阅showDialog()方法

如果您只是从onCreateDialogView()返回超级实施,我怀疑它会返回null