onBindDialogView не называется-Почему?


Я пытаюсь реализовать подкласс 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");    
  }

Почему это происходит? Чего мне не хватает?

Update : я поместил сообщение журнала в onCreateDialogView(), и Оно тоже вызывается.

Это только onBindDialogView(), который не вызывается.

Почему? Каковы условия для этого? этот обратный вызов должен быть вызван?

1 4

1 ответ:

Что возвращает ваш onCreateDialogView()? onBindDialogView() вызывается только в том случае, если вы возвращаете ненулевое пользовательское представление оттуда. Кроме того, onBindDialogView() вызывается только тогда, когда вы действительно показываете предпочтение. Ref: исходный код DialogPreference . В частности, смотрите showDialog() Метод

Если вы просто возвращаете супер-реализацию из вашего onCreateDialogView(), я подозреваю, что она возвращает null.