2016-04-17 18 views
1

Ich habe eine Klasse RelativeLayout erstreckt wie so:Android: Erweiterung RelativeLayout

class CustomLayout extends RelativeLayout { 

    CustomLayout(Context context) { 
     super(context, null, 0); 
    } 

    CustomLayout(Context context, AttributeSet attrs) { 
     super(context, attrs, 0); 
    } 

    CustomLayout(Context context, AttributeSet attrs, int defStyleAttr) { 
     super(context, attrs, defStyleAttr); 
    } 

} 

Ich Verwendung dieses Layout über die XML-Datei vornehmen:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    
    xmlns:custom="http://schemas.android.com/apk/res-auto"   
    android:layout_width="match_parent"   
    android:layout_height="match_parent"   
    android:orientation="vertical">    
     <com.vj.myapp.CustomLayout   
      android:id="@+id/imageView_container" 
      android:layout_width="match_parent"   
      android:layout_height="0dp"   
      android:background="#555"   
      android:layout_weight="1">      
     </com.vj.myapp.CustomLayout>  
</LinearLayout> 

aber die App stürzt mit:

Error inflating class com.vj.myapp.CustomView 

Ich habe die erforderlichen Konstruktoren zur Verfügung gestellt. Was ist los?

+0

Übrigens, wie formatiere ich Android-Code richtig in meinem Beitrag? – Alterecho

+0

Können Sie den vollständigen Stacktrace posten? – Floern

+0

'Fehler beim Aufblasen der Klasse com.vj.myapp.CustomView' wo ist CustomView ?? – ataulm

Antwort

3

Machen Sie sie öffentlich. Die Konstruktoren müssen zugänglich sein.

+0

Ja! Völlig vergessen meine Gedanken! Vielen Dank! – Alterecho

1

Wenn Sie Android Studio verwenden, drücken Sie Strg + O und wählen Sie Methoden zum Überschreiben. Es erzeugt Stubs mit korrekten Signaturen, dann können Sie den Code ändern, wie Sie möchten.