Ok,
Ce que j'essaie de faire, c'est d'intégrer une vue personnalisée dans le fichier main.xml de la mise en page par défaut :
<?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">
<com.lam.customview.CustomDisplayView
android:id="@+id/custom_display_view1"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<Button
android:id="@+id/prev"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="50"
android:textAppearance="?android:attr/textAppearanceSmall"
android:text="@string/prev" />
</LinearLayout>
</LinearLayout>
comme vous pouvez le voir, la classe s'appelle com.lam.customview.CustomDisplayView, avec l'id de custom_display_view1.
Maintenant, dans la classe com.lam.customview.CustomDisplayView, je veux utiliser une autre mise en page appelée custom_display_view.xml parce que je ne veux pas créer de contrôles/widgets de manière programmatique.
custom_display_view.xml est juste un bouton et une image, dont je veux changer le contenu en fonction de certaines conditions :
<?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:id="@+id/display_text_view1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<ImageView
android:id="@+id/display_image_view1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
</ImageView>
</LinearLayout>
J'ai essayé de le faire :
1)
public CustomDisplayView(Context context, AttributeSet attrs) {
super(context, attrs);
try
{
// register our interest in hearing about changes to our surface
SurfaceHolder holder = getHolder();
holder.addCallback(this);
View.inflate(context, R.layout.custom_display_view, null);
...
mais j'ai obtenu cette erreur, "03-08 20:33:15.711 : ERROR/onCreate(10879) : Fichier XML binaire ligne n°8 : Erreur de gonflement de la classe java.lang.reflect.Constructor ".
2)
public CustomDisplayView(Context context, AttributeSet attrs) {
super(context, attrs);
try
{
// register our interest in hearing about changes to our surface
SurfaceHolder holder = getHolder();
holder.addCallback(this);
View.inflate(context, R.id.custom_display_view1, null);
...
mais j'ai obtenu cette erreur, "03-08 20:28:47.401 : ERROR/CustomDisplayView(10806) : Resource ID #0x7f050002 type #0x12 is not valid "
De plus, si je procède de cette façon, comme quelqu'un l'a suggéré, je ne vois pas très bien comment le fichier custom_display_view.xml est associé à la classe de vue personnalisée.
Merci.