无法使用自定义LinearLayout提供xml inflate异常

时间:2015-09-22 13:35:45

标签: android

我在自定义线性布局中遇到一个例外。请参阅下面的示例代码。

public class ParentView extends LinearLayout {

    private Menu mMenu;

    public DontPressWithParentView(Context context, AttributeSet attrs, Menu menu) {
        super(context, attrs);
        mMenu = menu;
    }
}

当我在xml中使用此布局时,如下所示

com.android.ParentView
        android:id="@+id/call_icon"
        android:layout_width="91dip"
        android:layout_height="83dip"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="22dip"
        android:gravity="center" >

</com.android.hParentView>

它给了我xml inflate异常。请帮帮我。

1 个答案:

答案 0 :(得分:1)

您必须在Viewcode中实现以下构造函数:

public ParentView(Context context) {
  super(context);
}

public ParentView(Context context, AttributeSet attrs) {
  super(context, attrs);
}

public ParentView(Context context, AttributeSet attrs, int defStyleAttr) {
  super(context, attrs, defStyleAttr);
}

@TargetApi (Build.VERSION_CODES.LOLLIPOP)
public ParentView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
  super(context, attrs, defStyleAttr, defStyleRes);
}

此外,请检查xml中的包声明是否正确:

com.android.ParentView

这对我来说听起来有点奇怪。