4

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

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

4

1 回答 1

5

你的onCreateDialogView()回报是什么?onBindDialogView()仅当您从那里返回非空自定义视图时才调用。此外,onBindDialogView()仅在您实际显示首选项时才调用。参考:DialogPreference 的源代码。具体见showDialog()方法

如果你只是从你的超级实现中onCreateDialogView()返回,我怀疑它会返回null

于 2013-06-26T09:55:53.330 回答