自定义编辑文本首选项不显示编辑文本区域



我有设置活动,其中包含r.xml.preferences的首选项列表。这里看起来像这样的偏好之一:

        <AuthPreference
        android:title="@string/auth_title"
        android:summary="@string/auth_summary"
        android:key="pass"
        android:defaultValue="1"
        android:dialogMessage="Provide a message"
        android:layout="@layout/preference_auth"/>

此偏好扩展了EditTextPreference类,因此我希望在单击偏好后显示EditText区域。但是只有一个空对话框,只有没有,是的按钮。该代码如下所示:

public class AuthPreference extends EditTextPreference {
    private ImageView icon;
    private EditText et;

public AuthPreference(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    setNegativeButtonText("no");
    setPositiveButtonText("yes");
}
public AuthPreference(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
    setNegativeButtonText("no");
    setPositiveButtonText("yes");
}
@Override
protected void onBindView(View view) {
    super.onBindView(view);
    icon = (ImageView) view.findViewById(R.id.iconSelected);
}
@Override
    protected void onBindDialogView(View view) {

        some code
    }
}

怎么了?

事实证明,第二个构造函数是错误的

super(context, attrs);

而不是

super(context, attrs, 0);

您只需要小心,并确保将相应的args传递给特定父母的构造函数。

最新更新