2014-03-31 54 views
0

我有3个按钮,它们应该播放3种不同的声音。当我在oncreate方法中使用3个独立的onclicks方法时,它工作正常,但我想稍微清理一下代码,所以我实现了OnClickListener来实现活动并将onclick方法向下移动。但是现在,媒体播放器不会播放声音。我如何确保媒体播放器的工作?媒体播放器不会播放按钮中的声音单击方法

public class Play extends Activity implements OnClickListener { 

    MediaPlayer mpPlay1,mpPlay2,mpPlay3; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.play); 


    Button bPlay1 = (Button) findViewById(R.id.button1); 
    Button bPlay2 = (Button) findViewById(R.id.button2); 
    Button bPlay3 = (Button) findViewById(R.id.button3); 

     int resIdPlay1 = getResources().getIdentifier("play1", "raw", getPackageName()); 
     int resIdPlay2 = getResources().getIdentifier("play2", "raw", getPackageName()); 
     int resIdPlay3 = getResources().getIdentifier("play3", "raw", getPackageName()); 

     mpPlay1 = MediaPlayer.create(this, resIdPlay1); 
     mpPlay2 = MediaPlayer.create(this, resIdPlay2); 
     mpPlay3 = MediaPlayer.create(this, resIdPlay3); 

    } 

    @Override 
    public void onClick(View v) { 
     // TODO Auto-generated method stub 
     switch (v.getId()) { 
     case R.id.button1: 
      mpPlay1.start(); 
      break; 
     case R.id.button2: 
      mpPlay2.start(); 
      break; 
     case R.id.button3: 
      mpPlay3.start(); 
      break; 

     } 

    } 

} 

回答

2

您还没有在Buttons上实现侦听器,或者至少没有显示它。 setContentView()后,您应该有类似

Button btn1 = (Button) findViewById(R.id.button1); 
btn1.setOnClickListener(this); 

onCreate()内。您需要每个Button

由于您试图清理您的代码并使其更加简洁,您可以在您的xml中设置onClick()

我已经解释过in this answerthis one

The Button docs also cover this

+0

感谢您的回答,但不幸的是,问题不是。我添加了它,它仍然没有工作。 – user3316779

+0

你能定义“不工作”吗?你有什么错误吗?此外,编辑并发布代码的一部分以及如何添加它。 – codeMagic

+0

我编辑了代码。我没有收到任何错误。这就像在onclick方法中mediaplayer为null。 – user3316779