2011-01-07 13 views
0

我有一個主要的活動,並與3個不同的按鈕(三種不同的槍聲響)怪力接近

所以一個XML文件,當用戶點擊一個gunsound將播放按鈕。

這裏是它的外觀 -

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(); 
      } 
     }); 
    } 
} 

的問題是,當我在模擬器,這一切強制關閉打開的應用程序。 當我檢查logcat時,它說「引起:java.lang.InstantiationException:com.gunstats.gunstats」

這是什麼原因造成的?

+3

,你應該去通過一些Android開發人員網站上的基本教程 – Falmarri 2011-01-07 17:27:53

回答

2

這是因爲你在構造函數中執行代碼。你不應該在Activity的構造函數中執行任何代碼。您應該將所有代碼移動到Activity#onCreate

你應該變得非常熟悉Activity Lifecycle

+0

進出口仍然得到強制關閉的文檔; 公共類gunstats延伸活動{ \t @Override 公共無效的onCreate(捆綁savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); final MediaPlayer mp = MediaPlayer.create(this,R.drawable.deagle); – Alex 2011-01-07 17:29:49

+0

更新的問題,所以我們可以看到完整的代碼... – WarrenFaith 2011-01-07 17:33:51

0

這是完整的類?如果是這樣的:

  1. 一個活動沒有構造函數(至少是非,你應該永遠觸摸)
  2. 您需要實現onCreate()方法
  3. 你無處設定setContentView(R.layout.my_layout)
0

內容其他人指出你沒有遵循Activity的生命週期。
R.drawable.deagle你的聲音文件?如果是這樣,它不應該在/drawable/目錄中。將它移動到/raw/之類的地方。

這裏有幾個例子:Audio and VideoAudio Demo

這裏是MediaPlayer