我试图实现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

09-10 20:12