2013-02-18 116 views
0

我想按一個按鈕播放聲音,但應用程序意外地以非常簡單的代碼關閉。 MainActivity.java:應用程序以非常簡單的代碼意外關閉

package com.example.zvuki; 

import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 
import android.view.View; 
import android.widget.Button; 

public class MainActivity extends Activity { 

    protected Object MediaPlayer1 ; 
public class TestSonido extends Activity{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button br = (Button) findViewById(R.id.button1); 
     br.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
      MediaPlayer mp = MediaPlayer.create(TestSonido.this, R.raw.poeb); 
      mp.start(); 

      } 
     }); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

} 

} 

activity_main.xml中:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@drawable/texture_10_by_night_fate_stock" 
    android:onClick="onClick" 
    tools:context=".MainActivity" > 

    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" 
     android:layout_marginLeft="61dp" 
     android:layout_marginTop="73dp" 
     android:onClick="onClick" 
     android:text="POEBEN" /> 

</RelativeLayout> 

該項目不會給任何錯誤,因爲我不知道是什麼問題。

+0

請從logcat中張貼堆棧跟蹤。如果你不知道如何,請詢問。 – Simon 2013-02-18 23:57:55

+0

我不知道如何。 – Klara 2013-02-19 00:11:27

回答

0

刪除android:onClick =「onClick」,這樣做的目的是在您的活動中查找onClick方法,以便在單擊時調用,因爲您正在設置點擊監聽器,這是多餘的。

另一種方法是去除setOnClickListener代碼和您的onClick(查看視圖)代碼移動到類的主體,例如:

public class MainActivity extends Activity { 

    protected Object MediaPlayer1 ; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main);   
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.activity_main, menu); 
     return true; 
    } 

    public void onClick(View v) { 
     MediaPlayer mp = MediaPlayer.create(TestSonido.this, R.raw.poeb); 
     mp.start(); 
    } 

} 
+0

我照你說的做了。但我只有一個白色的屏幕,沒有任何按鈕或背景。 – Klara 2013-02-19 00:25:55

+0

我想刪除內部活動,編輯我的代碼來反映這一點。 – Ljdawson 2013-02-19 00:27:37

+0

我複製了你的代碼。白色屏幕與酒吧。 Ecslipse不會給出錯誤。 – Klara 2013-02-19 00:32:23