试图编写一个简单的程序。四个ImageButtons,任何一次点击,一个特定的音乐播放消息显示;再次点击任何按钮,音乐停止并再次显示消息。问题是,第一次点击开始和第二次点击停止执行完美;当我按下任何按钮时会出现问题,此消息显示:“不幸的是程序已停止”或类似的东西,程序崩溃。音乐播放和停止与ImageButtons点击消息
package com.example.appliedexperimentz;
import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity {
private MediaPlayer mp;
ImageView iv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mp = new MediaPlayer();
iv = (ImageView) findViewById(R.id.spaceForAnimation);
iv.setBackgroundResource(R.drawable.animestore);
}
public void imageButton1(View v) {
if(mp.isPlaying()){
mp.release();
Toast.makeText(MainActivity.this, "Music Stopped!", Toast.LENGTH_LONG).show();
}else{
mp = MediaPlayer.create(this, R.raw.firstmusik);
mp.start();
Toast.makeText(MainActivity.this, "First Music!", Toast.LENGTH_LONG).show();
}
}
public void imageButton2(View v) {
if(mp.isPlaying()){
mp.release();
Toast.makeText(MainActivity.this, "Music Stopped!", Toast.LENGTH_LONG).show();
}else{
mp = MediaPlayer.create(this, R.raw.secondmusik);
mp.start();
Toast.makeText(MainActivity.this, "Second Music!", Toast.LENGTH_LONG).show();
}
}
public void imageButton3(View v) {
if(mp.isPlaying()){
mp.release();
Toast.makeText(MainActivity.this, "Music Stopped!", Toast.LENGTH_LONG).show();
}else{
mp = MediaPlayer.create(this, R.raw.thirdmusik);
mp.start();
Toast.makeText(MainActivity.this, "Third Music!", Toast.LENGTH_LONG).show();
}
}
public void imageButton4(View v) {
if(mp.isPlaying()){
mp.release();
Toast.makeText(MainActivity.this, "Music Stopped!", Toast.LENGTH_LONG).show();
}else{
mp = MediaPlayer.create(this, R.raw.fourthmusik);
mp.start();
Toast.makeText(MainActivity.this, "Fourth Music!", Toast.LENGTH_LONG).show();
}
}
@Override
public void onDestroy() {
mp.release();
}
}
这里去logcat的错误:
11-14 23:23:31.943:E/AndroidRuntime(659):致命异常:主要 11-14 23:23:31.943:E/AndroidRuntime (659):java.lang.IllegalStateException:无法执行活动的方法 11-14 23:23:31.943:E/AndroidRuntime(659):at android.view.View $ 1.onClick(View.java:3044) E/AndroidRuntime(659):at android.view.View.performClick(View.java:3511) 11-14 23:23:31.943:E/AndroidRuntime(659):at android.view.View $ PerformClick.run(View.java:14105) 11-14 23:23:31。 943:E/AndroidRuntime(659):在android.os.Handler.handleCallback(Handler.java:605) 11-14 23:23:31.943:E/AndroidRuntime(659):at android.os.Handler.dispatchMessage Handler.java:92) 11-14 23:23:31.943:E/AndroidRuntime(659):at android.os.Looper.loop(Looper.java:137) 11-14 23:23:31.943:E/AndroidRuntime(659):at android.app.ActivityThread.main(ActivityThread.java:4424) 11-14 23:23:31.943:E/AndroidRuntime(659):at java.lang.reflect.Method.invokeNative(Native Method ) 11-14 23:23:31.943:E/AndroidRuntime(659):at java.lang.reflect.Method.invoke(Method.java:511) 11-14 23:23:31.943:E/AndroidRuntime(659) ):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:784) 11-14 23:23:31.943:E/AndroidRuntime(659):at com.android.internal.os.ZygoteInit 。主要(ZygoteInit.java:551) 11-14 23:23:31.943:E/AndroidRuntime(659):at dalvik.system.NativeStart.main(Native Method) 11-14 23:23:31.943:E/AndroidRuntime 659):引起:java.lang.reflect.InvocationTargetException 11-14 23:23:31.943:E/AndroidRuntime(659):at java.lang.reflect.Method.invokeNative(Native Method) 11-14 23: 23:31.943:E/AndroidRuntime(659):在java.lang.reflect.Method.invoke(Method.java:511) 11-14 23:23:31.943:E/AndroidRuntime(659):at android.view。查看$ 1.onClick(View.java:3039) 11-14 23:23:31.943:E/AndroidRuntime(659):... 11更多 11-14 23:23:31.943:E/AndroidRuntime(659)由于:java.lang.IllegalStateException 11-14 23:23:31.943:E/AndroidRuntime(659):在android.media.MediaPlayer.isPlaying(本机方法) 11-14 23:23:31.943:E/AndroidRuntime(659):at com.example.appliedexperimentz.MainActivity.imageButton3(MainActivity.java:59) 11-14 23:23:31.943:E/AndroidRuntime(659) ... 14多个
再次感谢你的友善和乐于助人。我遇到了一些错误,可能是因为我改变了旧程序中的代码。明天我将重新制作另一个程序,并附上你的这些代码,当然会让你知道它的结果。再次感谢。 – 2014-11-17 17:35:03
很高兴知道上面的代码为你工作:) – Jickson 2014-11-17 19:02:53
你知道,我真的缺乏用适当的评估数组装饰的话。你真的很聪明,希望我能够获得最小的智力。任何话都无法满足我对你的好感,因为你对像我这样的新手有好感。我只需要一个忙就可以请你解释一下我以前的代码所犯的错误,以及为什么当你改变它的时候,它会完美地运行吗?请让我知道,除非我会完全黑暗。急切等待。保重并再次感谢.. – 2014-11-18 17:21:16