我正在使用 Java 和 XML 为 Android 构建应用程序。该应用程序的用户必须能够收听和暂停音乐。所以我做了一个按钮,你可以用它来播放和暂停曲子。我创建了一个函数,其中必须更改 ImageView
的 src
。但是 Eclipse 在 mp.start()
和 mp.pause()
处给我一个错误,它说:“mp cannot be resolved”.
我不知道我现在做错了什么,我希望有人能帮助我。
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" />
最佳答案
那是因为我认为您已经在 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);
}
更新您的 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;
}
}
关于java - MediaPlayer 暂停和播放错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15327050/