2010-07-29 3 views
0

J'essaie de faire référence à une vue personnalisée dans la mise en page XML de helloWorld, mais je reçois l'exception suivante: Erreur lors du gonflement de la classe acme.my.MyTextView. Cependant, je suis capable d'instancier la vue et de l'ajouter manuellement à la vue de contenu principale. La vue personnalisée est construite à partir de sa propre mise en page XML. Comment puis-je faire fonctionner ça?Problème lié à une vue personnalisée dans une mise en page XML

public class MyTextView extends LinearLayout { 

MyTextView(Context context){ 
    super(context); 

    LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    layoutInflater.inflate(R.layout.my_text_view,this); 
} 

MyTextView(Context context, AttributeSet attrs){ 
    super(context, attrs); 

    LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    layoutInflater.inflate(R.layout.my_text_view,this); 
} 
} 



<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" 
    /> 

    <view class = "acme.my.MyTextView" 
android:id="@+id/myView" 
android:orientation="vertical" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"   
/> 
+0

@fredrick: en général, il y a un « causé par » exception ci-dessous celui que vous citez qui explique une – CommonsWare

+0

MyTextView (Context, AttributeSet) J'ai un point d'arrêt en haut du constructeur et il n'est jamais touché – Fredrick

+0

Eh bien, je l'ai fait avec des mises en page très simples et ça semble fonctionner. comprendre ce qui se brise dans la mise en page plus complexe. – Fredrick

Répondre

1

Les constructeurs ne sont pas publics. :(

0

vous devez appeler comme ça

<com.example.MyLayout 
     android:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" /> 

également faire vos constructeurs publics

Questions connexes