在Android Studio中以xml格式自定义视图类时出错

时间:2014-11-24 17:59:15

标签: android xml android-studio

我使用Android Studio 1.0 RC 1,而且我在xml文件中浏览视图类时遇到问题。 我有一个扩展GridView的视图文件,它包含所有3个构造函数:

package app.views;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.GridView;

public class ImageSeGridView extends GridView {

    public ImageSeGridView(Context context) {
        super(context);
        init();
    }

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

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

    private void init() {
        //....
    }
}

我在xml类中添加了这个视图:

<app.views.ImageSeGridView
        android:id="@+id/image_search_grid"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

我在编译时没有得到任何抱怨,但在运行时我收到以下错误:

android.view.InflateException: Binary XML file line #13: Error inflating class app.views.ImageSeGridView
        at android.view.LayoutInflater.createView(LayoutInflater.java:626)
        at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:702)
        at android.view.LayoutInflater.rInflate(LayoutInflater.java:761)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:498)
        at android.view.LayoutInflater.inflate(LayoutInflater.java:398)

我不知道如何解决这个问题。例如,使用IntelliJ IDEA 13时不会发生这种情况,仅在使用Android Studio时才会发生。

1 个答案:

答案 0 :(得分:1)

我不确定你的目标是21,但这是我最近一直在做的事情。

public CustomView(Context context) {
    super(context);
    init();
}

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

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

@TargetApi(21)
public CustomView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
    super(context, attrs, defStyleAttr, defStyleRes);
    init();
}

快速编辑:另外,我在我的布局中使用了完全限定的包名称 - com.company.appname.views.widgets.customview等。我不确定这是否是您的包名称的全部范围