2011-01-07 19 views
0

Ich habe eine Haupttätigkeit und eine XML-Datei mit 3 verschiedenen Tasten (drei verschiedene Gun-Sounds)merkwürdige Kraft schließt

Also, wenn der Benutzer eine der Tasten ein gunsound gespielt werden klickt.

hier ist, wie es aussieht -

public class gunstats extends Activity { 

    public gunstats(Bundle onSavedStateInstance) { 


     final MediaPlayer mp = MediaPlayer.create(this, R.drawable.deagle); 

     Button button3 = (Button)this.findViewById(R.id.button3); 
     button3.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       mp.start(); 
      } 
     }); 
    } 
} 

das Problem, dass, wenn ich öffnen Sie die App in einem Emulator, es alle Kraft schließt. Wenn ich das logcat überprüfe, sagt es "verursacht durch: java.lang.InstantiationException: com.gunstats.gunstats"

Was verursacht dieses?

+3

Sie wirklich durch einige der grundlegenden Tutorials auf der Android-Entwickler Website – Falmarri

Antwort

2

Dies liegt daran, dass Sie Code im Konstruktor ausführen. Sie sollten keinen Code in einem Activity Konstruktor ausführen. Sie sollten den gesamten Code in Activity#onCreate verschieben.

Sie sollten sich sehr gut mit dem Activity Lifecycle vertraut machen.

+0

Im noch immer Kraft nahe gehen sollte; public class gunstats erstreckt Aktivität { \t @Override public void onCreate (Bundle savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.main); finaler MediaPlayer mp = MediaPlayer.create (dies, R.drawable.deagle); – Alex

+0

aktualisieren Sie die Frage, damit wir den vollständigen Code sehen können ... – WarrenFaith

0

Ist das die komplette Klasse? Wenn ja:

  1. Eine Aktivität keinen Konstruktor hat (zumindest nicht sollten Sie jemals berühren)
  2. Sie benötigen die onCreate() Methode
  3. Sie haben zu implementieren nirgends gesetzt einen Inhalt mit setContentView(R.layout.my_layout)
+0

Wow, ich habe diesen Teil total vermisst! Danke, dass du mir geholfen hast, Jungs! – Alex

0

Andere haben darauf hingewiesen, dass Sie dem Activity Lebenszyklus nicht folgen.
Ist R.drawable.deagle Ihre Sounddatei? Wenn ja, sollte es nicht im Verzeichnis /drawable/ sein. Verschieben Sie es an einen Ort wie /raw/.

Hier sind ein paar Beispiele: Audio and Video, Audio Demo

Hier werden die Dokumente sind für MediaPlayer

Verwandte Themen