Java 不幸的是,你的应用程序已停止
我是一个真正的android开发新手。我试图运行一个播放音频文件的方法,但当我打开它时,我得到了“不幸的”应用程序名“已停止” 以下是错误日志:Java 不幸的是,你的应用程序已停止,java,android,eclipse,Java,Android,Eclipse,我是一个真正的android开发新手。我试图运行一个播放音频文件的方法,但当我打开它时,我得到了“不幸的”应用程序名“已停止” 以下是错误日志: FATAL EXCEPTION: main Process: com.androiddevbook.onyourbike.chapter4, PID: 21393 java.lang.IllegalStateException: Could not execute method of the activity at android.vie
FATAL EXCEPTION: main
Process: com.androiddevbook.onyourbike.chapter4, PID: 21393
java.lang.IllegalStateException: Could not execute method of the activity
at android.view.View$1.onClick(View.java:3823)
at android.view.View.performClick(View.java:4438)
at android.view.View$PerformClick.run(View.java:18422)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invoke(Native Method): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at android.view.View$1.onClick(View.java:3818)
... 9 more
Caused by: android.content.ActivityNotFoundException: Unable to find explicit activity class {com.androiddevbook.onyourbike.chapter4/com.androiddevbook.onyourbike.chapter4.Media}; have you declared this activity in your AndroidManifest.xml?
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1628)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1424)
at android.app.Activity.startActivityForResult(Activity.java:3424)
at android.app.Activity.startActivityForResult(Activity.java:3385)
at android.app.Activity.startActivity(Activity.java:3627)
at android.app.Activity.startActivity(Activity.java:3595)
at com.androiddevbook.onyourbike.chapter4.TimerActivity.clickedMusic(TimerActivity.java:178)
... 11 more
java类:
package com.androiddevbook.onyourbike.chapter4;
import java.util.concurrent.TimeUnit;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageButton;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;
import com.androiddevbook.onyourbike.chapter4.R;
public class Media extends Activity {
public TextView songName,startTimeField,endTimeField;
private MediaPlayer mediaPlayer;
private double startTime = 0;
private double finalTime = 0;
private Handler myHandler = new Handler();;
private int forwardTime = 5000;
private int backwardTime = 5000;
private SeekBar seekbar;
private ImageButton playButton,pauseButton;
public static int oneTimeOnly = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_media);
songName = (TextView)findViewById(R.id.textView4);
startTimeField =(TextView)findViewById(R.id.textView1);
endTimeField =(TextView)findViewById(R.id.textView2);
seekbar = (SeekBar)findViewById(R.id.seekBar1);
playButton = (ImageButton)findViewById(R.id.imageButton1);
pauseButton = (ImageButton)findViewById(R.id.imageButton2);
songName.setText("song.mp3");
mediaPlayer = MediaPlayer.create(this, R.raw.song);
seekbar.setClickable(false);
pauseButton.setEnabled(false);
}
public void play(View view){
Toast.makeText(getApplicationContext(), "Playing sound",
Toast.LENGTH_SHORT).show();
mediaPlayer.start();
finalTime = mediaPlayer.getDuration();
startTime = mediaPlayer.getCurrentPosition();
if(oneTimeOnly == 0){
seekbar.setMax((int) finalTime);
oneTimeOnly = 1;
}
endTimeField.setText(String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes((long) finalTime),
TimeUnit.MILLISECONDS.toSeconds((long) finalTime) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.
toMinutes((long) finalTime)))
);
startTimeField.setText(String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes((long) startTime),
TimeUnit.MILLISECONDS.toSeconds((long) startTime) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.
toMinutes((long) startTime)))
);
seekbar.setProgress((int)startTime);
myHandler.postDelayed(UpdateSongTime,100);
pauseButton.setEnabled(true);
playButton.setEnabled(false);
}
private Runnable UpdateSongTime = new Runnable() {
public void run() {
startTime = mediaPlayer.getCurrentPosition();
startTimeField.setText(String.format("%d min, %d sec",
TimeUnit.MILLISECONDS.toMinutes((long) startTime),
TimeUnit.MILLISECONDS.toSeconds((long) startTime) -
TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.
toMinutes((long) startTime)))
);
seekbar.setProgress((int)startTime);
myHandler.postDelayed(this, 100);
}
};
public void pause(View view){
Toast.makeText(getApplicationContext(), "Pausing sound",
Toast.LENGTH_SHORT).show();
mediaPlayer.pause();
pauseButton.setEnabled(false);
playButton.setEnabled(true);
}
public void forward(View view){
int temp = (int)startTime;
if((temp+forwardTime)<=finalTime){
startTime = startTime + forwardTime;
mediaPlayer.seekTo((int) startTime);
}
else{
Toast.makeText(getApplicationContext(),
"Cannot jump forward 5 seconds",
Toast.LENGTH_SHORT).show();
}
}
public void rewind(View view){
int temp = (int)startTime;
if((temp-backwardTime)>0){
startTime = startTime - backwardTime;
mediaPlayer.seekTo((int) startTime);
}
else{
Toast.makeText(getApplicationContext(),
"Cannot jump backward 5 seconds",
Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.media, menu);
return true;
}
}
package com.androiddevbook.onyourbike.chapter4;
导入java.util.concurrent.TimeUnit;
导入android.media.MediaPlayer;
导入android.os.Bundle;
导入android.os.Handler;
导入android.app.Activity;
导入android.view.Menu;
导入android.view.view;
导入android.widget.Button;
导入android.widget.EditText;
导入android.widget.ImageButton;
导入android.widget.SeekBar;
导入android.widget.TextView;
导入android.widget.Toast;
导入com.androiddevbook.onyourbike.chapter4.R;
公共类媒体扩展活动{
公共文本视图songName、startTimeField、endTimeField;
私人媒体播放器;
专用双起始时间=0;
私人双最终时间=0;
私有处理程序myHandler=新处理程序();;
专用int forwardTime=5000;
专用int backwardTime=5000;
私人SeekBar SeekBar;
专用图像按钮播放按钮、暂停按钮;
公共静态int-oneTimeOnly=0;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_media);
songName=(TextView)findViewById(R.id.textView4);
startTimeField=(TextView)findViewById(R.id.textView1);
endTimeField=(TextView)findViewById(R.id.textView2);
seekbar=(seekbar)findViewById(R.id.seekBar1);
playButton=(ImageButton)findViewById(R.id.imageButton1);
pauseButton=(ImageButton)findViewById(R.id.imageButton2);
songName.setText(“song.mp3”);
mediaPlayer=mediaPlayer.create(这个,R.raw.song);
seekbar.setClickable(假);
pauseButton.setEnabled(false);
}
公共无效播放(视图){
Toast.makeText(getApplicationContext(),“播放声音”,
吐司。长度(短)。show();
mediaPlayer.start();
finalTime=mediaPlayer.getDuration();
startTime=mediaPlayer.getCurrentPosition();
if(oneTimeOnly==0){
seekbar.setMax((int)finalTime);
一次性=1;
}
endTimeField.setText(String.format(“%d分钟,%d秒”),
时间单位。毫秒。toMinutes((长)finalTime),
时间单位。毫秒。到秒((长)最终时间)——
TimeUnit.MINUTES.toSeconds(TimeUnit.millides。
toMinutes((长)finalTime)))
);
startTimeField.setText(String.format(“%d分钟,%d秒”),
时间单位。毫秒。t分钟((长)开始时间),
时间单位毫秒到秒((长)开始时间)-
TimeUnit.MINUTES.toSeconds(TimeUnit.millides。
t分钟((长)开始时间)
);
seekbar.setProgress((int)startTime);
postDelayed(UpdateSongTime,100);
pauseButton.setEnabled(true);
playButton.setEnabled(假);
}
private Runnable UpdateSongTime=new Runnable(){
公开募捐{
startTime=mediaPlayer.getCurrentPosition();
startTimeField.setText(String.format(“%d分钟,%d秒”),
时间单位。毫秒。t分钟((长)开始时间),
时间单位毫秒到秒((长)开始时间)-
TimeUnit.MINUTES.toSeconds(TimeUnit.millides。
t分钟((长)开始时间)
);
seekbar.setProgress((int)startTime);
myHandler.postDelayed(这个,100);
}
};
公共无效暂停(视图){
Toast.makeText(getApplicationContext(),“暂停声音”,
吐司。长度(短)。show();
mediaPlayer.pause();
pauseButton.setEnabled(false);
playButton.setEnabled(真);
}
公共无效前进(视图){
int temp=(int)开始时间;
如果((临时+转发时间)0){
startTime=startTime-后退时间;
mediaPlayer.seekTo((int)startTime);
}
否则{
Toast.makeText(getApplicationContext(),
“不能向后跳5秒”,
吐司。长度(短)。show();
}
}
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.media,menu);
返回true;
}
}
任何帮助都将不胜感激。谢谢…在您的AndroidManifest.xml上注册您的活动类 所以你的清单文件应该是这样的
<activity android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<activity android:name="yourActivity"></activity>
这将解决问题异常询问您:“无法找到显式活动类{com.androiddevbook.onyourbike.chapter4/com.androiddevbook.onyourbike.chapter4.Media};您是否在AndroidManifest.xml中声明了此活动?”是否?您可能忘记在清单中添加内容:){com.androiddevbook.onyourbike.chapter4/com.androiddevbook.onyourbike.chapter4.Media};你在你的AndroidManifest.xml中声明过这个活动了吗?哇。尼克比我快了一步!绝对正确!你们救了我的命…很多。这正是我所错过的