2017-10-11 5 views
0

Ich implementiere benutzerdefinierte view in Android. Ich habe es immer so erstellt z. B.:Android benutzerdefinierte Ansicht: Xml vs Progrmatisch

RelativeLayout relativeLayout = (RelativeLayout) findViewById(R.id.view1); 
CustomView customView = new CustomView(relativeLayout.getContext()); 
relativeLayout.addView(customView); 

Dies funktioniert gut. Aber wenn ich versuchte etwas anderes:

CustomView customView = (CustomView) findViewById(R.id.customView);

in xml ist es wie folgt aus:

<com.my.package.CustomView 
     android:id="@+id/customView" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"/> 

Ich habe den Fehler bekam: android.view.InflateException: Binary XML-Datei Zeile # 14 : Fehler aufblähenden Klasse

Meine benutzerdefinierte Ansicht erstreckt RelativeLayout und dies ist der einzige Konstruktor:

public CustomView(Context c){ 
    super(c); 
    //adding some html to the webview here 
} 

Fehle ich etwas?

+0

Siehe http://www.vogella.com/tutorials/AndroidCustomViews/article.html –

Antwort

2

Wenn Sie Ihre benutzerdefinierte Ansicht aus XML verwenden, wird der Konstruktor für einzelne Argumente nicht verwendet. Vielmehr werden zwei/drei Argumentkonstruktoren verwendet.

sollten Sie andere Konstrukteure als auch hinzufügen:

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

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

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