Java 如何将自定义视图添加到xml布局中?

Java 如何将自定义视图添加到xml布局中?,java,android,Java,Android,有以下xml: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" >

有以下xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <com.ulnda.calendarapplication.MyCalendarView
        android:id="@+id/calendarView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>
一切都很好,但当我尝试执行此应用程序时,我会收到以下消息:

10-19 12:59:30.037: E/AndroidRuntime(30968): FATAL EXCEPTION: main
10-19 12:59:30.037: E/AndroidRuntime(30968): android.view.InflateException: Binary XML file line #7: Error inflating class com.ulnda.calendarapplication.MyCalendarView

如何修复它?

您需要实现一些构造函数才能使其正常工作。视图包含以下内容:

  • [查看(上下文、属性集属性)](http://developer.android.com/reference/android/view/View.html#View(android.content.Context,android.util.AttributeSet))
  • [查看(上下文、属性集属性、int-defStyle)](http://developer.android.com/reference/android/view/View.html#View(android.content.Context,android.util.AttributeSet,int))
第二个和第三个用于XML膨胀。您需要为视图类实现与第二个(可能还有第三个)相对应的构造函数。即实施:

  • MyCalendar(上下文、属性集属性)
如果需要(可能不需要),请添加以下内容:

  • MyCalendar(上下文上下文、属性集属性、int-defStyle)

    • 也尝试添加这些构造函数

      public MyCalendarView(Context context, AttributeSet attrs) {
          super(context, attrs);
      }
      
      public MyCalendarView(Context context, AttributeSet attrs, int defStyle) {
          super(context, attrs, defStyle);
      }
      

      (你没有足够的构造函数)你写的名字正确吗?有时会这样
      public MyCalendarView(Context context, AttributeSet attrs) {
          super(context, attrs);
      }
      
      public MyCalendarView(Context context, AttributeSet attrs, int defStyle) {
          super(context, attrs, defStyle);
      }