java.lang.InstantiationException: ne peut pas instancier la classe : aucun constructeur vide
Je suis en train de créer un jeu sur Android et j'ai un problème avec l'instanciation de la vue. Je suis gonflé à l'aide d'un point de vue.
Voici mon code pour l'afficher :
public class GameView extends TableLayout {
public GameView(Context context, AttributeSet attrs) {
super(context, attrs);
}
pour l'activité
public class GameActivity extends Activity {
private GameView view;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
this.view = (GameView) View.inflate(this,R.layout.game, null);
}
et voici l'erreur
D/dalvikvm( 6176): newInstance failed: no <init>()
D/AndroidRuntime( 6176): Shutting down VM
W/dalvikvm( 6176): threadid=1: thread exiting with uncaught exception (group=0x41a80700)
E/AndroidRuntime( 6176): FATAL EXCEPTION: main
E/AndroidRuntime( 6176): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.android.homework.em.go/com.android.homework.em.go.GameView}: java.lang.InstantiationException: can't instantiate class com.android.homework.em.go.GameView; no empty constructor
E/AndroidRuntime( 6176): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2137)
E/AndroidRuntime( 6176): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
E/AndroidRuntime( 6176): at android.app.ActivityThread.access$600(ActivityThread.java:141)
E/AndroidRuntime( 6176): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
E/AndroidRuntime( 6176): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 6176): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 6176): at android.app.ActivityThread.main(ActivityThread.java:5103)
E/AndroidRuntime( 6176): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 6176): at java.lang.reflect.Method.invoke(Method.java:525)
E/AndroidRuntime( 6176): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
E/AndroidRuntime( 6176): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime( 6176): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 6176): Caused by: java.lang.InstantiationException: can't instantiate class com.android.homework.em.go.GameView; no empty constructor
E/AndroidRuntime( 6176): at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime( 6176): at java.lang.Class.newInstance(Class.java:1130)
E/AndroidRuntime( 6176): at android.app.Instrumentation.newActivity(Instrumentation.java:1061)
E/AndroidRuntime( 6176): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2128)
E/AndroidRuntime( 6176): ... 11 more
W/ActivityManager( 436): Force finishing activity com.android.homework.em.go/.GameView
Merci pour votre aide !
EDIT :
1) Le problème est que lorsque je crée un constructeur vide, je ne peux pas compiler, car il est dit que le constructeur n'est pas compatible avec le constructeur de TableLayout.
2) je suis à l'aide de la Vue.gonfler parce que je l'ai trouvé sur ce tutoriel : http://www.therealjoshua.com/2012/07/android-architecture-part-10-the-activity-revisited/
Ce que je veux, c'est de définir une vue de mon activité qui est en partie la décrire par un fichier xml (mise en page.de jeu) et en partie créé programmaticaly avec la classe GameView.java
Comment puis-je le faire ?
no empty constructor
signifie que vous n'avez pas un constructeur vide.Vue.gonfler? qu'est-ce que voir ?
OriginalL'auteur Emarco | 2013-10-29
Vous devez vous connecter pour publier un commentaire.
En fait, le problème était que je n'étais pas à l'appel de l'activité de manière correcte dans le fichier manifeste. J'ai appelé GameView au lieu de GameActivity.
OriginalL'auteur Emarco
Vous pouvez ajouter un constructeur vide:
mais êtes-vous sûr que tu ne veux pas faire quelque chose de plus comme:
Gonflage de vue manuellement dans une activité de création semble un peu bizarre.
OriginalL'auteur blahdiblah
Je tente de démarrer une activité avec une classe abstraite.
OriginalL'auteur Peter
Essayer cette
Vous devez trouver l'id de votre point de vue sur la mise en page
dans votre classe, assurez-vous d'avoir
J'ai édité la réponse
J'ai donné un id à la tablelayout dans le fichier xml et j'ai fait ce que vous suggérez, mais l'application est encore arrêté. (mais merci encore en tout cas !)
OriginalL'auteur serge