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 ответ:
Что возвращает ваш
onCreateDialogView()
?onBindDialogView()
вызывается только в том случае, если вы возвращаете ненулевое пользовательское представление оттуда. Кроме того,onBindDialogView()
вызывается только тогда, когда вы действительно показываете предпочтение. Ref: исходный код DialogPreference . В частности, смотритеshowDialog()
МетодЕсли вы просто возвращаете супер-реализацию из вашего
onCreateDialogView()
, я подозреваю, что она возвращаетnull
.