2014-03-12 3 views
0

자연스럽게 android.view.InflateException을 인스턴스화하는 동안 레이아웃 XML 파일을 해당 View 객체로 호출하는 방법은 무엇입니까? AttributeSet 매개 변수 및 throw을 사용하여 생성자를 지우는 것은 금지됩니다.android.view.lnflateException을 (를) 다시 작성하는 방법

사용은 일반적인 생성자의 설정 : RuntimeException의에서

public TestView(Context context) { 
    this(context, null); 
} 

public TestView(Context context, AttributeSet attrs) { 
    this(context, attrs, com.android.internal.R.attr.gridViewStyle); 
} 

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

    TypedArray a = context.obtainStyledAttributes(attrs, 
      com.android.internal.R.styleable.GridView, defStyle, 0); 

    int hSpacing = a.getDimensionPixelOffset(
      com.android.internal.R.styleable.GridView_horizontalSpacing, 0); 
    setHorizontalSpacing(hSpacing); 

    int vSpacing = a.getDimensionPixelOffset(
      com.android.internal.R.styleable.GridView_verticalSpacing, 0); 
    setVerticalSpacing(vSpacing); 

    int index = a.getInt(com.android.internal.R.styleable.GridView_stretchMode, STRETCH_COLUMN_WIDTH); 
    if (index >= 0) { 
     setStretchMode(index); 
    } 

    int columnWidth = a.getDimensionPixelOffset(com.android.internal.R.styleable.GridView_columnWidth, -1); 
    if (columnWidth > 0) { 
     setColumnWidth(columnWidth); 
    } 

    int numColumns = a.getInt(com.android.internal.R.styleable.GridView_numColumns, 1); 
    setNumColumns(numColumns); 

    index = a.getInt(com.android.internal.R.styleable.GridView_gravity, -1); 
    if (index >= 0) { 
     setGravity(index); 
    } 

    a.recycle(); 
} 
+1

문제가 무엇을 던져 수 있습니까? – Blackbelt

+0

저는 제약 조건을 감안할 때 무엇을 성취하려고하는지 잘 모르겠습니다. 그러나,'View' 생성자에서 나오는'Exception '은 http://androidxref.com/4.4.2_r1/xref/frameworks/base/core/java/android/view/LayoutInflater.java#594 – laalto

+0

을 참조하십시오. 클래스의 뷰 인스턴스를'GridView'로 변경하면서'AbsListView'를 확장 한'TestView'의 인플레이션 에러의 기원을 결정하는 것이 목적입니다. –

답변