2013-02-18 115 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