3

次の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>

MyCalendarView:

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

どうすれば修正できますか?

4

2 に答える 2

2

これを機能させるには、いくつかのコンストラクターを実装する必要があります。ビューには次のものがあります。

  • View(コンテキスト コンテキスト)
  • [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) )

2 番目と 3 番目は XML インフレーションに使用されます。2 番目、場合によっては 3 番目に対応するビュー クラスのコンストラクターを実装する必要があります。つまり、次を実装します。

  • MyCalendar(コンテキスト コンテキスト、AttributeSet 属性)

必要に応じて以下を追加します (おそらく不要です)。

  • MyCalendar(Context context, AttributeSet attrs, int defStyle)
于 2012-10-19T09:11:56.383 に答える
2

これらのコンストラクターも追加してみてください

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

public MyCalendarView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}
于 2012-10-19T09:12:51.610 に答える