J'essayais de faire une application avec une vue personnalisée, et j'ai continué à obtenir "erreur gonfler classe". Il doit être que je manque certaines des bases quand il s'agit de vues personnalisées, mais je ne suis pas sûr de quoi. Voici un programme très simple avec une vue personnalisée, que faut-il de plus pour le faire fonctionner?SurfaceView et la classe de gonflement d'erreur
(Notes: Pour résoudre cette question, j'ai placé la classe SurfaceView dans la classe d'activité, ce qui n'était pas le cas dans la plus grande application.) Je ne montre pas le fichier AndroidManifest.xml ici, mais c'est juste ce que a été généré par l'assistant dans Eclipse)
Voici la java.
package com.mypackage;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Log;
import android.view.SurfaceView;
public class SimpleCustomViewActivity extends Activity {
class TheView extends SurfaceView{
private static final String TAG = "TheView";
public TheView(Context context, AttributeSet attrs) {
super(context, attrs);
Log.i(TAG,"TheView(" + context + "," + attrs + ")");
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.simple_layout);
TheView v = (TheView) findViewById(R.id.myview);
}
}
Voici res fichier/mise en page/simple_layout.xml:
<?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.mypackage.SimpleCustomView.TheView
android:id="@+id/myview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>
j'ai changé l'application simple vue de refléter votre suggestion. Il s'est toujours écrasé. Il existe une longue trace de pile qui semble initialement être déclenchée par une exception ClassNotFoundException sur com.mypackage.SimpleCustomViewActivity.TheView. J'ai donc essayé de rendre le cours public aussi, mais il se bloque. – JimC
En outre, je remarque que nous avons tous deux écrit com.mypackage.SimpleCustomView quand nous entendons com.mypackage.SimpleCustomViewActivity. Mais cette erreur particulière semble ne jamais avoir été dans le code source que j'ai testé et doit avoir été introduit lorsque je l'ai copié sur ce formulaire web. – JimC
Ok. Je l'ai eu pour travailler. J'ai dû déplacer TheView vers un autre fichier plutôt que de l'avoir comme sous-classe. Merci beaucoup pour l'aide. Les choses les plus simples peuvent parfois déranger le cerveau d'un développeur pendant des heures. Je souhaite que les erreurs ci-dessus ont été interceptées au moment de la compilation. – JimC