2013-03-10 93 views
1

我正在用Java和XML构建Android应用程序。应用程序的用户必须能够听到曲调并暂停播放。所以我制作了一个可以播放和暂停曲调的按钮。我做了一个函数,其中必须更改ImageViewsrc。然而Eclipse给我一个错误在mp.start()mp.pause(),它说:“mp不能解决”MediaPlayer暂停并播放错误

我不知道我现在做错了什么,我希望有人能帮助我。

Java代码:

import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.Menu; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageView; 

public class Level01vraag01 extends Activity implements OnClickListener { 

    int playknopvariable = 0; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.vraaglayout); 
     setupButtonClickListeners(); 
     final MediaPlayer mp = MediaPlayer.create(Level01vraag01.this, R.raw.mcdonalds); 
    } 

    private void setupButtonClickListeners() { 
     ImageView playsoundButton = (ImageView) findViewById(R.id.playsoundbutton); 
     playsoundButton.setOnClickListener(this); 
    } 

    private void klikopplaybutton() { 
     if (playknopvariable == 0) { 
      mp.start(); 
      playknopvariable = 1; 
      playsoundButton.setImageResource(R.drawable.playsoundbutton); 
     } else { 
      mp.pause(); 
      playknopvariable = 0; 
      playsoundButton.setImageResource(R.drawable.pause); 
     } 
    } 

    public void onClick(View v) { 
     switch (v.getId()) { 
     case R.id.playsoundbutton: 
      klikopplaybutton(); 
      break; 
     } 

XML代码:

<ImageView 
    android:id="@+id/playsoundbutton" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_above="@+id/guessbutton" 
    android:layout_centerHorizontal="true" 
    android:layout_marginBottom="33dp" 
    android:src="@drawable/playsoundbutton" /> 

回答

3

,因为我认为你已经宣布并在onCreate方法实例化MP和它是不是在klikopplaybutton()方法进行访问。

尝试类似这样的东西。

public class Level01vraag01 extends Activity implements OnClickListener { 

    int playknopvariable = 0; 
    MediaPlayer mp; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.vraaglayout); 
     setupButtonClickListeners(); 
     mp = MediaPlayer.create(Level01vraag01.this, R.raw.mcdonalds); 

    } 

private void setupButtonClickListeners() 
{ 
    ImageView playsoundButton = (ImageView) findViewById(R.id.playsoundbutton); 
    playsoundButton.setOnClickListener(this); 
} 

UPDATE在您的ImageView的错误。

您在您的playsoundButton ImageView对象中发生错误,因为您再次声明它并在setupButtonClickListeners方法中执行findViewById,并且它在klikopplaybutton方法中不可访问。

试试这个。

public class Level01vraag01 extends Activity implements OnClickListener { 

    int playknopvariable = 0; 
    MediaPlayer mp; 
    ImageView playsoundButton; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.vraaglayout); 
     setupButtonClickListeners(); 
     mp = MediaPlayer.create(Level01vraag01.this, R.raw.mcdonalds); 

    } 

    private void setupButtonClickListeners(){ 
     playsoundButton = (ImageView) findViewById(R.id.playsoundbutton); 
     playsoundButton.setOnClickListener(this); 
    } 

    private void klikopplaybutton(){ 

     if (playknopvariable == 0){ 
      mp.start(); 
      playknopvariable = 1; 
      playsoundButton.setImageResource(R.drawable.playsoundbutton); 
     }else{ 
      mp.pause(); 
      playknopvariable = 0; 
      playsoundButton.setImageResource(R.drawable.pause); 
    } 

    public void onClick(View v) { 

     switch(v.getId()){ 
     case R.id.playsoundbutton: 
      klikopplaybutton(); 
     break; 
    } 

} 
+0

太棒了!谢谢你,你解决了这个问题,但现在当我尝试更改imageView的来源时,我在“playsoundButton”出现错误。 – 2013-03-10 20:25:59

+0

你能更新你的代码吗?并发布堆栈跟踪? – 2013-03-10 20:26:48

+0

你的意思是错误在哪一行?错误代码如下: playsoundButton.setImageResource(R.drawable.pause); 它说“playsoundButton无法解决” – 2013-03-10 20:29:46