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

3
以下是XML代码:

有以下的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>

我的日历视图:

public class MyCalendarView extends CalendarView {

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

    @Override
    public void setOnClickListener(OnClickListener listener) {
//      View v;
//      v.setOn

    }

    @Override
    public boolean performClick() {
        Log.e("event", "perform_click");
        return true;
    }
}

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

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

如何解决它?

你没有足够的构造函数。 - njzk2
你是否正确地写下了名称?有时会发生这种情况。 - Niko Adrianus Yuwono
2个回答

2
尝试添加这些构造函数。
public MyCalendarView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

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

2
您需要实现一些构造函数才能使其工作。View有以下内容:
  • View(Context context)
  • [View(Context context, AttributeSet attrs)](http://developer.android.com/reference/android/view/View.html#View(android.content.Context, android.util.AttributeSet))
  • [View(Context context, AttributeSet attrs, int defStyle)](http://developer.android.com/reference/android/view/View.html#View(android.content.Context, android.util.AttributeSet, int))
第二个和第三个用于XML膨胀。您需要实现与第二个和可能是第三个对应的视图类的构造函数。也就是说,实现:
  • MyCalendar(Context context, AttributeSet attrs)
如果需要,请添加以下内容(可能不需要):
  • MyCalendar(Context context, AttributeSet attrs, int defStyle)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接